⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 svgpropertiesmarkerchooserwidget.java

📁 完全基于java开发的svg矢量绘图工具
💻 JAVA
字号:
/* * Created on 19 janv. 2005 *  =============================================                   GNU LESSER GENERAL PUBLIC LICENSE Version 2.1 =============================================GLIPS Graffiti Editor, a SVG EditorCopyright (C) 2004 Jordi SUC, Philippe Gil, SARL ITRISThis library is free software; you can redistribute it and/ormodify it under the terms of the GNU Lesser General PublicLicense as published by the Free Software Foundation; eitherversion 2.1 of the License, or (at your option) any later version.This library is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNULesser General Public License for more details.You should have received a copy of the GNU Lesser General PublicLicense along with this library; if not, write to the Free SoftwareFoundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USAContact : jordi.suc@itris.fr; philippe.gil@itris.fr ============================================= */package fr.itris.glips.svgeditor.properties;import java.awt.*;import java.awt.event.*;import java.util.*;import javax.swing.*;import org.w3c.dom.*;import fr.itris.glips.svgeditor.*;import fr.itris.glips.svgeditor.canvas.*;/** * @author Jordi SUC */public class SVGPropertiesMarkerChooserWidget extends SVGPropertiesWidget{    /**     * the constructor of the class     * @param propertyItem a property item     */	public SVGPropertiesMarkerChooserWidget(SVGPropertyItem propertyItem) {		super(propertyItem);				buildComponent();	}		/**	 * builds the component that will be displayed	 */	protected void buildComponent(){				final SVGEditor editor=propertyItem.getProperties().getSVGEditor();		final SVGFrame frame=editor.getFrameManager().getCurrentFrame();	    String propertyValue=propertyItem.getGeneralPropertyValue();	    	    if(propertyValue!=null && ! propertyValue.equals("") && ! propertyValue.equals("none")){	        	        propertyValue=SVGToolkit.toUnURLValue(propertyValue);	    }	    	    //the map associating the id of a resource contained in the "defs" element 	    //of the svg document of the frame to this resource	    Hashtable resources=null;	    	    if(frame!=null){	        	        //the list of types of resources that should appear in the combo	        LinkedList resourceTagNames=new LinkedList();	        resourceTagNames.add("marker");	        	        Document doc=frame.getScrollPane().getSVGCanvas().getDocument();	        resources=frame.getResourcesFromDefs(doc, resourceTagNames);	    }		LinkedList itemList=new LinkedList();		Map values=new LinkedHashMap(propertyItem.getPropertyValuesMap());		Map labels=new LinkedHashMap(propertyItem.getPropertyValuesLabelMap());		String cur=null, value="";		SVGComboResourceItem item=null, selectedItem=null;		Element resource=null;				if(resources!=null){		    			//fills the map with the values of the resource ids			for(Iterator it=resources.keySet().iterator(); it.hasNext();){			    			    try{			        cur=(String)it.next();			    }catch (Exception ex){cur=null;}			    			    if(cur!=null){			        			        values.put(cur, cur);			        labels.put(cur, cur);			    }			}		}		//an item with an empty string		item=new SVGComboResourceItem(frame,  "","", null);		itemList.add(item);					//builds the array of items for the combo		for(Iterator it=values.keySet().iterator(); it.hasNext();){						try{				cur=(String)it.next();				value=(String)values.get(cur);				resource=(Element)resources.get(cur);				item=new SVGComboResourceItem(frame, value, (String)labels.get(cur), resource);									//checks if the current possible value is equals to the current value of the property				if(value!=null && propertyValue!=null && value.equals(propertyValue)){				    				    selectedItem=item;				}							}catch (Exception ex){item=null;}							if(item!=null){			    			    itemList.add(item);			}		}					Object[] items=itemList.toArray();				//the combo box		final JComboBox combo=new JComboBox(items);		combo.setFont(theFont);		combo.setRenderer(new SVGComboResourceCellRenderer());		combo.setPreferredSize(new Dimension(combo.getWidth(), 24));				if(selectedItem!=null)combo.setSelectedItem(selectedItem);					final ActionListener comboListener=new ActionListener(){		    			public void actionPerformed(ActionEvent evt) {			    			    //unregisters the nodes with the last value that each of them had			    Node cur=null;			    String val=null;			    			    for(Iterator it=nodesList.iterator(); it.hasNext();){			        			        try{			            cur=(Node)it.next();			        }catch (Exception ex){cur=null;}			        			        if(cur!=null){			            			            val=propertyItem.getPropertyValue(cur);			            val=editor.getSVGToolkit().toUnURLValue(val);			            			            if(val!=null && ! val.equals("") && ! val.equals("none")){			                			                frame.removeNodeUsingResource(val, cur);			            }			        }			    }			    //gets the new value and adds it, and registers the node to the resource manager				String value="";								if(combo.getSelectedItem()!=null){				    					value=((SVGComboResourceItem)combo.getSelectedItem()).getValue();				}								//modifies the widgetValue of the property item				if(value!=null && ! value.equals("")){				    				    if(! value.equals("none")){				        				        //registers the id for the list of nodes						frame.addNodesUsingResource(value, nodesList);				        				        value=editor.getSVGToolkit().toURLValue(value);				    }				    					propertyItem.changePropertyValue(value);				}			}		};					//adds a listener to the combo box		combo.addActionListener(comboListener);					//the panel that will be contained in the widget object		JPanel panel=new JPanel();		panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));		panel.add(combo);				component=panel;					//creates the disposer		disposer=new Runnable(){            public void run() {				combo.removeActionListener(comboListener);            }		};	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -