📄 toolbarproperties.java
字号:
} for (int k = 0; k < buttons.length; k++) { int id = buttons[k].getId(); for (int m = 0; m < _buttons.length; m++) { if (_buttons[m].getId() == id) { hasButton = true; break; } hasButton = false; } if (!hasButton) { rebuild = true; ToolBarButton newButton = (ToolBarButton)buttons[k].clone(); newButton.setVisible(false); newButton.setOrder(1000); currentToolBar.addButton(newButton); } } } // regenerate the saved file if required if (rebuild) { tools = new Vector(toolsArray.length); for (int i = 0; i < toolsArray.length; i++) { tools.add(toolsArray[i]); } saveTools(); } } private static synchronized void loadTools() { String fullPath = null; File file = new File(toolsConfPath); if (file.exists()) { InputStream in = null; try { SAXParserFactory factory = SAXParserFactory.newInstance(); factory.setNamespaceAware(true); SAXParser parser = factory.newSAXParser(); XMLToolHandler handler = new XMLToolHandler(); in = new FileInputStream(file); parser.parse(in, handler); tools = handler.getToolsVector(); SwingUtilities.invokeLater(new Runnable() { public void run() { compareTools(); } }); } catch (Exception e) { e.printStackTrace(); GUIUtils.displayErrorMessage( null, "Error opening tools definitions.\nResorting to system defaults."); loadDefaults(true); } finally { if (in != null) { try { in.close(); } catch (IOException e) {} } } } else { GUIUtils.displayErrorMessage( null, "Tool buttons definition XML file not found.\n" + "Ensure the file toolbars.xml is in the conf " + "directory of this distribution."); } } static class XMLToolHandler extends DefaultHandler { private ToolBarWrapper toolBar; private ToolBarButton tb; private ToolBarConstraints tbc; private CharArrayWriter contents = new CharArrayWriter(); private Vector toolBars = new Vector(); public XMLToolHandler() {} public void startElement(String nameSpaceURI, String localName, String qName, Attributes attrs) { contents.reset(); if (localName.equals(TOOLBAR)) { toolBar = new ToolBarWrapper(attrs.getValue(NAME), Boolean.valueOf(attrs.getValue(VISIBLE)).booleanValue()); } else if (localName.equals(CONSTRAINTS)) { tbc = new ToolBarConstraints(); } else if (localName.equals(BUTTON)) { tb = new ToolBarButton(Integer.parseInt(attrs.getValue(ID)), attrs.getValue(ACTION_ID)); } } public void endElement(String nameSpaceURI, String localName, String qName) { if (localName.equals(ROW)) tbc.setRow(Integer.parseInt(contents.toString())); else if (localName.equals(POSITION)) tbc.setPosition(Integer.parseInt(contents.toString())); else if (localName.equals(LOC_X)) tbc.setLocX(Integer.parseInt(contents.toString())); else if (localName.equals(RESIZE_OFFSET_X)) tbc.setResizeOffsetX(Integer.parseInt(contents.toString())); else if (localName.equals(MINIMUM_WIDTH)) tbc.setMinimumWidth(Integer.parseInt(contents.toString())); else if (localName.equals(PREFERRED_WIDTH)) tbc.setPreferredWidth(Integer.parseInt(contents.toString())); else if (localName.equals(CURRENT_WIDTH)) tbc.setCurrentWidth(Integer.parseInt(contents.toString())); else if (localName.equals(VISIBLE)) tb.setVisible(Boolean.valueOf(contents.toString()).booleanValue()); else if (localName.equals(ORDER)) { tb.setOrder(Integer.parseInt(contents.toString())); toolBar.addButton(tb); tb = null; } else if (localName.equals(TOOLBAR)) { toolBar.setConstraints(tbc); toolBars.add(toolBar); tbc = null; } } public Vector getToolsVector() { return toolBars; } public void characters(char[] data, int start, int length) { contents.write(data, start, length); } public void ignorableWhitespace(char[] data, int start, int length) { characters(data, start, length); } public void error(SAXParseException spe) throws SAXException { throw new SAXException(spe.getMessage()); } } // XMLHandler static class ToolsParser implements XMLReader { private String nsu = EMPTY; private AttributesImpl atts = new AttributesImpl(); private String attType1 = "CDATA"; private ContentHandler handler; private static char[] newLine = {'\n'}; private static String indent_1 = "\n "; private static String indent_2 = "\n "; private static String indent_3 = "\n "; private static String indent_4 = "\n "; public ToolsParser() {} public void parse(InputSource input) throws SAXException, IOException { if (!(input instanceof ToolbarButtonsSource)) throw new SAXException("Parser can only accept a ToolbarButtonsSource"); parse((ToolbarButtonsSource)input); } public void parse(ToolbarButtonsSource input) throws IOException, SAXException { try { if (handler == null) { throw new SAXException("No content handler"); } ToolBarWrapper[] tb = input.getTools(); handler.startDocument(); handler.startElement(nsu, EQ_TOOLBARS, EQ_TOOLBARS, atts); handler.ignorableWhitespace(newLine, 0, 1); boolean isSeparator = false; ToolBarConstraints tbc = null; ToolBarButton button = null; Vector buttons = null; String marker = null; for (int i = 0; i < tb.length; i++) { handler.ignorableWhitespace(indent_1.toCharArray(), 0, indent_1.length()); atts.addAttribute(EMPTY, NAME, NAME, attType1, tb[i].getName()); atts.addAttribute(EMPTY, VISIBLE, VISIBLE, attType1, Boolean.toString(tb[i].isVisible())); handler.startElement(nsu, TOOLBAR, TOOLBAR, atts); atts.removeAttribute(atts.getIndex(NAME)); atts.removeAttribute(atts.getIndex(VISIBLE)); handler.ignorableWhitespace(newLine, 0, 1); handler.ignorableWhitespace(indent_2.toCharArray(), 0, indent_2.length()); handler.startElement(nsu, CONSTRAINTS, CONSTRAINTS, atts); handler.ignorableWhitespace(newLine, 0, 1); tbc = tb[i].getConstraints(); writeXML(ROW, Integer.toString(tbc.getRow()), indent_3); writeXML(POSITION, Integer.toString(tbc.getPosition()), indent_3); writeXML(LOC_X, Integer.toString(tbc.getLocX()), indent_3); writeXML(RESIZE_OFFSET_X, Integer.toString(tbc.getResizeOffsetX()), indent_3); writeXML(MINIMUM_WIDTH, Integer.toString(tbc.getMinimumWidth()), indent_3); writeXML(PREFERRED_WIDTH, Integer.toString(tbc.getPreferredWidth()), indent_3); writeXML(CURRENT_WIDTH, Integer.toString(tbc.getCurrentWidth()), indent_3); handler.ignorableWhitespace(newLine, 0, 1); handler.ignorableWhitespace(indent_2.toCharArray(), 0, indent_2.length()); handler.endElement(nsu, CONSTRAINTS, CONSTRAINTS); handler.ignorableWhitespace(newLine, 0, 1); tbc = null; if (tb[i].hasButtons()) { buttons = tb[i].getButtonsVector(); handler.ignorableWhitespace(indent_2.toCharArray(), 0, indent_2.length()); handler.startElement(nsu, BUTTONS, BUTTONS, atts); handler.ignorableWhitespace(newLine, 0, 1); for (int j = 0, k = buttons.size(); j < k; j++) { button = (ToolBarButton)buttons.elementAt(j); handler.ignorableWhitespace(indent_3.toCharArray(), 0, indent_3.length()); atts.addAttribute(EMPTY, ID, ID, attType1, Integer.toString(button.getId())); isSeparator = button.isSeparator(); if (!isSeparator) atts.addAttribute(EMPTY, ACTION_ID, ACTION_ID, attType1, button.getActionId()); handler.startElement(nsu, BUTTON, BUTTON, atts); atts.removeAttribute(atts.getIndex(ID)); if (!isSeparator) atts.removeAttribute(atts.getIndex(ACTION_ID)); writeXML(VISIBLE, Boolean.toString(button.isVisible()), indent_4); writeXML(ORDER, Integer.toString(button.getOrder()), indent_4); handler.ignorableWhitespace(indent_3.toCharArray(), 0, indent_3.length()); handler.endElement(nsu, BUTTON, BUTTON); handler.ignorableWhitespace(newLine, 0, 1); } handler.ignorableWhitespace(indent_2.toCharArray(), 0, indent_2.length()); handler.endElement(nsu, BUTTONS, BUTTONS); handler.ignorableWhitespace(newLine, 0, 1); } handler.ignorableWhitespace(indent_1.toCharArray(), 0, indent_1.length()); handler.endElement(nsu, TOOLBAR, TOOLBAR); handler.ignorableWhitespace(newLine, 0, 1); } handler.ignorableWhitespace(newLine, 0, 1); handler.endElement(nsu, EQ_TOOLBARS, EQ_TOOLBARS); handler.endDocument(); } catch (Exception e) { e.printStackTrace(); } } private void writeXML(String name, String line, String space) throws SAXException { int textLength = line.length(); handler.ignorableWhitespace(space.toCharArray(), 0, space.length()); handler.startElement(nsu, name, name, atts); handler.characters(line.toCharArray(), 0, textLength); handler.endElement(nsu, name, name); } public void setContentHandler(ContentHandler handler) { this.handler = handler; } public ContentHandler getContentHandler() { return this.handler; } public void setErrorHandler(ErrorHandler handler) {} public ErrorHandler getErrorHandler() { return null; } public void parse(String systemId) throws IOException, SAXException { } public DTDHandler getDTDHandler() { return null; } public EntityResolver getEntityResolver() { return null; } public void setEntityResolver(EntityResolver resolver) {} public void setDTDHandler(DTDHandler handler) {} public Object getProperty(String name) { return null; } public void setProperty(String name, java.lang.Object value) {} public void setFeature(String name, boolean value) {} public boolean getFeature(String name) { return false; } } // class DriverParser static class ToolbarButtonsSource extends InputSource { public ToolBarWrapper[] getTools() { int size = tools.size(); ToolBarWrapper[] toolBars = new ToolBarWrapper[size]; for (int i = 0; i < size; i++) { toolBars[i] = (ToolBarWrapper)tools.elementAt(i); } return toolBars; } } // class ToolbarButtonsSource }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -