📄 optionsdialog.java
字号:
if(dividerLocation != -1) splitter.setDividerLocation(dividerLocation); // in case saved geometry is too small updateSize(); show(); } //}}} //{{{ selectPane() method private boolean selectPane(OptionGroup node, String name) { return selectPane(node,name,new ArrayList()); } //}}} //{{{ selectPane() method private boolean selectPane(OptionGroup node, String name, ArrayList path) { path.add(node); Enumeration e = node.getMembers(); while(e.hasMoreElements()) { Object obj = e.nextElement(); if(obj instanceof OptionGroup) { OptionGroup grp = (OptionGroup)obj; if(grp.getName().equals(name)) { path.add(grp); path.add(grp.getMember(0)); TreePath treePath = new TreePath( path.toArray()); paneTree.scrollPathToVisible(treePath); paneTree.setSelectionPath(treePath); return true; } else if(selectPane((OptionGroup)obj,name,path)) return true; } else if(obj instanceof OptionPane) { OptionPane pane = (OptionPane)obj; if(pane.getName().equals(name) || name == null) { path.add(pane); TreePath treePath = new TreePath( path.toArray()); paneTree.scrollPathToVisible(treePath); paneTree.setSelectionPath(treePath); return true; } } else if(obj instanceof String) { String pane = (String)obj; if(pane.equals(name) || name == null) { path.add(pane); TreePath treePath = new TreePath( path.toArray()); paneTree.scrollPathToVisible(treePath); paneTree.setSelectionPath(treePath); return true; } } } path.remove(node); return false; } //}}} //{{{ save() method private void save(Object obj) { if(obj instanceof OptionGroup) { OptionGroup grp = (OptionGroup)obj; Enumeration members = grp.getMembers(); while(members.hasMoreElements()) { save(members.nextElement()); } } else if(obj instanceof OptionPane) { try { ((OptionPane)obj).save(); } catch(Throwable t) { Log.log(Log.ERROR,this,"Error saving options:"); Log.log(Log.ERROR,this,t); } } else if(obj instanceof String) { save(deferredOptionPanes.get(obj)); } } //}}} //{{{ updateSize() method private void updateSize() { Dimension currentSize = getSize(); Dimension requestedSize = getPreferredSize(); Dimension newSize = new Dimension( Math.max(currentSize.width,requestedSize.width), Math.max(currentSize.height,requestedSize.height) ); if(newSize.width < 300) newSize.width = 300; if(newSize.height < 200) newSize.height = 200; setSize(newSize); validate(); } //}}} //}}} //{{{ PaneNameRenderer class class PaneNameRenderer extends DefaultTreeCellRenderer { public PaneNameRenderer() { paneFont = UIManager.getFont("Tree.font"); if(paneFont == null) paneFont = jEdit.getFontProperty("metal.secondary.font"); groupFont = paneFont.deriveFont(Font.BOLD); } public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) { super.getTreeCellRendererComponent(tree,value, selected,expanded,leaf,row,hasFocus); String name = null; if (value instanceof OptionGroup) { setText(((OptionGroup)value).getLabel()); this.setFont(groupFont); } else if (value instanceof OptionPane) { name = ((OptionPane)value).getName(); this.setFont(paneFont); } else if (value instanceof String) { name = ((String)value); this.setFont(paneFont); } if (name != null) { String label = jEdit.getProperty("options." + name + ".label"); if (label == null) { setText("NO LABEL PROPERTY: " + name); } else { setText(label); } } setIcon(null); return this; } private Font paneFont; private Font groupFont; } //}}} //{{{ OptionTreeModel class public class OptionTreeModel implements TreeModel { public void addTreeModelListener(TreeModelListener l) { listenerList.add(TreeModelListener.class, l); } public void removeTreeModelListener(TreeModelListener l) { listenerList.remove(TreeModelListener.class, l); } public Object getChild(Object parent, int index) { if (parent instanceof OptionGroup) { return ((OptionGroup)parent).getMember(index); } else { return null; } } public int getChildCount(Object parent) { if (parent instanceof OptionGroup) { return ((OptionGroup)parent).getMemberCount(); } else { return 0; } } public int getIndexOfChild(Object parent, Object child) { if (parent instanceof OptionGroup) { return ((OptionGroup)parent) .getMemberIndex(child); } else { return -1; } } public Object getRoot() { return root; } public boolean isLeaf(Object node) { return !(node instanceof OptionGroup); } public void valueForPathChanged(TreePath path, Object newValue) { // this model may not be changed by the TableCellEditor } protected void fireNodesChanged(Object source, Object[] path, int[] childIndices, Object[] children) { Object[] listeners = listenerList.getListenerList(); TreeModelEvent modelEvent = null; for (int i = listeners.length - 2; i >= 0; i -= 2) { if (listeners[i] != TreeModelListener.class) continue; if (modelEvent == null) { modelEvent = new TreeModelEvent(source, path, childIndices, children); } ((TreeModelListener)listeners[i + 1]) .treeNodesChanged(modelEvent); } } protected void fireNodesInserted(Object source, Object[] path, int[] childIndices, Object[] children) { Object[] listeners = listenerList.getListenerList(); TreeModelEvent modelEvent = null; for (int i = listeners.length - 2; i >= 0; i -= 2) { if (listeners[i] != TreeModelListener.class) continue; if (modelEvent == null) { modelEvent = new TreeModelEvent(source, path, childIndices, children); } ((TreeModelListener)listeners[i + 1]) .treeNodesInserted(modelEvent); } } protected void fireNodesRemoved(Object source, Object[] path, int[] childIndices, Object[] children) { Object[] listeners = listenerList.getListenerList(); TreeModelEvent modelEvent = null; for (int i = listeners.length - 2; i >= 0; i -= 2) { if (listeners[i] != TreeModelListener.class) continue; if (modelEvent == null) { modelEvent = new TreeModelEvent(source, path, childIndices, children); } ((TreeModelListener)listeners[i + 1]) .treeNodesRemoved(modelEvent); } } protected void fireTreeStructureChanged(Object source, Object[] path, int[] childIndices, Object[] children) { Object[] listeners = listenerList.getListenerList(); TreeModelEvent modelEvent = null; for (int i = listeners.length - 2; i >= 0; i -= 2) { if (listeners[i] != TreeModelListener.class) continue; if (modelEvent == null) { modelEvent = new TreeModelEvent(source, path, childIndices, children); } ((TreeModelListener)listeners[i + 1]) .treeStructureChanged(modelEvent); } } private OptionGroup root = new OptionGroup(null); private EventListenerList listenerList = new EventListenerList(); } //}}}}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -