📄 svgvisualresourcelistspanel.java
字号:
getVisualResources().getVisualResourcesToolkit().removeVisualResource(frame, newElement); resourceState.setSelectedItemId(name, ""); refreshResources(RESOURCE_DELETED, name, null, newElement); } public void redo(){ getVisualResources().getVisualResourcesToolkit().appendVisualResource(frame, fparentElement, newElement); resourceState.setSelectedItemId(name, id); refreshResources(RESOURCE_NEW, name, newElement, null); } }; SVGUndoRedoActionList actionlist=new SVGUndoRedoActionList(action.getName()); actionlist.add(action); getVisualResources().getSVGEditor().getUndoRedo().addActionList(frame, actionlist); } resourceState.setSelectedItemId(name, id); frame.setModified(true); refreshResources(RESOURCE_NEW, name, newElement, null); } } }); } } /** * duplicate the resource node corresponding to the given resource object * @param resourceObject a resource object */ protected void removeResource(SVGVisualResourceObject resourceObject){ if(frame!=null && resourceObject!=null && resourceObject.canBeModified() && resourceObject.getParentNode()!=null){ final Element fparentElement=(Element)resourceObject.getParentNode(); final Element resourceElement=resourceObject.getInitialNode(); final String name=resourceObject.getResourceModel().getName(); final String id=resourceObject.getResourceId(); frame.enqueue(new Runnable(){ public void run() { //appending the newly created resource node to its parent node getVisualResources().getVisualResourcesToolkit().removeVisualResource(frame, resourceElement); //create the undo/redo action and insert it into the undo/redo stack if(getVisualResources().getSVGEditor().getUndoRedo()!=null){ SVGUndoRedoAction action=new SVGUndoRedoAction(getVisualResources().undoredoresourcesremove){ public void undo(){ getVisualResources().getVisualResourcesToolkit().appendVisualResource(frame, fparentElement, resourceElement); resourceState.setSelectedItemId(name, id); refreshResources(RESOURCE_NEW, name, resourceElement, null); } public void redo(){ getVisualResources().getVisualResourcesToolkit().removeVisualResource(frame, resourceElement); resourceState.setSelectedItemId(name, ""); refreshResources(RESOURCE_DELETED, name, null, resourceElement); } }; SVGUndoRedoActionList actionlist=new SVGUndoRedoActionList(action.getName()); actionlist.add(action); getVisualResources().getSVGEditor().getUndoRedo().addActionList(frame, actionlist); } resourceState.setSelectedItemId(name, ""); frame.setModified(true); refreshResources(RESOURCE_DELETED, name, null, resourceElement); } }); } } /** * imports a resource node from the visual resource store * @param parentElement the parent element * @param resourceObject a resource object */ protected void importResource(Element parentElement, SVGVisualResourceObject resourceObject){ if(frame!=null && resourceObject!=null && ! resourceObject.canBeModified() && parentElement!=null){ final Element fparentElement=parentElement, resourceNode=resourceObject.getInitialNode(); final String name=resourceObject.getResourceModel().getName(); frame.enqueue(new Runnable(){ public void run() { final Element newElement=getVisualResources().getVisualResourcesToolkit().importVisualResource(frame, fparentElement, resourceNode); if(newElement!=null){ final String id=newElement.getAttribute("id"); //appending the newly created resource node to its parent node getVisualResources().getVisualResourcesToolkit().appendVisualResource(frame, fparentElement, newElement); //create the undo/redo action and insert it into the undo/redo stack if(getVisualResources().getSVGEditor().getUndoRedo()!=null){ SVGUndoRedoAction action=new SVGUndoRedoAction(getVisualResources().undoredoresources){ public void undo(){ getVisualResources().getVisualResourcesToolkit().removeVisualResource(frame, newElement); resourceState.setSelectedItemId(name, ""); refreshResources(RESOURCE_DELETED, name, null, newElement); } public void redo(){ getVisualResources().getVisualResourcesToolkit().appendVisualResource(frame, fparentElement, newElement); resourceState.setSelectedItemId(name, id); refreshResources(RESOURCE_NEW, name, newElement, null); } }; SVGUndoRedoActionList actionlist=new SVGUndoRedoActionList(action.getName()); actionlist.add(action); getVisualResources().getSVGEditor().getUndoRedo().addActionList(frame, actionlist); } resourceState.setSelectedItemId(name, id); frame.setModified(true); refreshResources(RESOURCE_NEW, name, null, newElement); } } }); } } /** * modifies the properties of the given resource * @param resourceObject a resource object */ protected void modifyProperties(SVGVisualResourceObject resourceObject){ if(frame!=null && resourceObject!=null && resourceObject.canBeModified()){ final SVGVisualResourceObject fresourceObject=resourceObject; final Element oldElement=fresourceObject.getInitialNode(); final Element newElement=fresourceObject.getResourceNode(); final Element parentElement=(Element)resourceObject.getParentNode(); final String name=resourceObject.getResourceModel().getName(); frame.enqueue(new Runnable(){ public void run() { //displays the dialog int returnValue=SVGVisualResourceResourceModifier.showPropertyModifierDialog(fresourceObject); if(returnValue==SVGVisualResourceResourceModifier.OK){ //applying the modifications fresourceObject.applyChanges(); //getting the ids final String oldId=oldElement.getAttribute("id"), newId=fresourceObject.getResourceId(); //create the undo/redo action and insert it into the undo/redo stack if(getVisualResources().getSVGEditor().getUndoRedo()!=null){ SVGUndoRedoAction action=new SVGUndoRedoAction(getVisualResources().undoredoresources){ @Override public void undo(){ //removing the modified node and adding the initial node getVisualResources().getVisualResourcesToolkit().removeVisualResource(frame, newElement); getVisualResources().getVisualResourcesToolkit().appendVisualResource(frame, parentElement, oldElement); //modifying the id of the resource in the map of the resources in the canvas if(! newId.equals(oldId)){ frame.modifyResourceId(oldId, newId); } //refreshing the nodes that use the resource frame.refreshNodesUsingResource(oldId); //refreshing the resources lists resourceState.setSelectedItemId(name, oldId); refreshResources(RESOURCE_MODIFIED, name, oldElement, newElement); } @Override public void redo(){ //removing the initial node and adding the modified node getVisualResources().getVisualResourcesToolkit().removeVisualResource(frame, oldElement); getVisualResources().getVisualResourcesToolkit().appendVisualResource(frame, parentElement, newElement); if(! newId.equals(oldId)){ //modifying the id of the resource in the map of the resources in the canvas frame.modifyResourceId(newId, oldId); } //refreshing the nodes that use the resource frame.refreshNodesUsingResource(newId); //refreshing the resources lists resourceState.setSelectedItemId(name, newId); refreshResources(RESOURCE_MODIFIED, name, newElement, oldElement); } }; SVGUndoRedoActionList actionlist=new SVGUndoRedoActionList(action.getName()); actionlist.add(action); getVisualResources().getSVGEditor().getUndoRedo().addActionList(frame, actionlist); } frame.setModified(true); //removing the initial node and adding the modified node getVisualResources().getVisualResourcesToolkit().removeVisualResource(frame, oldElement); getVisualResources().getVisualResourcesToolkit().appendVisualResource(frame, parentElement, newElement); if(! newId.equals(oldId)){ //modifying the id of the resource in the map of the resources in the canvas frame.modifyResourceId(newId, oldId); } //refreshing the nodes that use the resource frame.refreshNodesUsingResource(newId); //refreshing the resources lists resourceState.setSelectedItemId(name, newId); refreshResources(RESOURCE_MODIFIED, name, newElement, oldElement); }else{ //removes this resource object fresourceObject.getResourceModel().getResourceObjectsList().remove(fresourceObject); refreshResources(RESOURCE_MODIFIED, name, oldElement, fresourceObject.getResourceNode()); } } }); } } /** * the list cell renderer * * @author Jordi SUC */ protected class SVGVisualResourcesListCellRenderer implements ListCellRenderer{ /** * @param list * @param item * @param index * @param isSelected * @param cellHasFocus * @return the component representing an item in a list */ public Component getListCellRendererComponent(JList list, Object item, int index, boolean isSelected, boolean cellHasFocus) { JPanel panel=new JPanel(); if(item!=null){ panel.setLayout(new BorderLayout(5, 0)); JComponent resourceComponent=((SVGVisualResourceListItem)item).getResourceRepresentation(); SVGVisualResourceObject resObj=((SVGVisualResourceListItem)item).getVisualResourceObject(); panel.add(resourceComponent, BorderLayout.WEST); JLabel label=new JLabel(((SVGVisualResourceListItem)item).getVisualResourceObject().getResourceId()); label.setFont(list.getFont()); panel.add(label, BorderLayout.CENTER); if(isSelected){ if(((SVGVisualResourceListItem)item).getVisualResourceObject().canBeModified()){ panel.setBackground(list.getSelectionBackground()); label.setBackground(list.getSelectionBackground()); label.setForeground(list.getSelectionForeground()); }else{ panel.setBackground(MetalLookAndFeel.getPrimaryControlDarkShadow()); label.setBackground(MetalLookAndFeel.getPrimaryControlDarkShadow()); label.setForeground(list.getSelectionForeground()); } }else{ if(((SVGVisualResourceListItem)item).getVisualResourceObject().canBeModified()){ panel.setBackground(list.getBackground()); label.setBackground(list.getBackground()); label.setForeground(list.getForeground()); }else{ panel.setBackground(MetalLookAndFeel.getPrimaryControlShadow()); label.setBackground(MetalLookAndFeel.getPrimaryControlShadow()); label.setForeground(list.getForeground()); } } //adds the cell panel to the list of the cell panels if(panel!=null){ cellPanels.put(resObj, panel); } } return panel; } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -