📄 driverstreepanel.java
字号:
* to repaint the tree display. */ protected void nodeNameValueChanged(DatabaseDriver driver) { TreeNode node = tree.getNodeFromRoot(driver); if (node != null) { tree.nodeChanged(node); } } private void checkDriversPanel() { // check we have a drivers panel if (driversPanel == null) { driversPanel = new DriverViewPanel(this); } // check the panel is in the pane JPanel _viewPanel = GUIUtilities.getCentralPane(DriversPanel.TITLE); if (_viewPanel == null) { GUIUtilities.addCentralPane(DriversPanel.TITLE, DriversPanel.FRAME_ICON, driversPanel, "JDBC Drivers", true); } else { GUIUtilities.setSelectedCentralPane(DriversPanel.TITLE); } } public void valueChanged(TreeSelectionEvent e) { Object object = e.getPath().getLastPathComponent(); if (object instanceof DatabaseDriverNode) { enableButtons(true); checkDriversPanel(); DatabaseDriverNode node = (DatabaseDriverNode)object; driversPanel.valueChanged(node); } else if (object == tree.getRootNode()) { checkDriversPanel(); driversPanel.displayRootPanel(); enableButtons(false); } else { enableButtons(false); } } /** * Returns the database driver at the specified point. * * @return the driver properties object */ protected DatabaseDriver getDriverAt(Point point) { TreePath path = tree.getPathForLocation(point.x, point.y); return getDriverAt(tree.getPathForLocation(point.x, point.y)); } /** * Returns the database driver associated with the specified path. * * @return the driver properties object */ protected DatabaseDriver getDriverAt(TreePath path) { if (path != null) { Object object = path.getLastPathComponent(); if (object instanceof DatabaseDriverNode) { return ((DatabaseDriverNode)object).getDriver(); } } return null; } /** * Returns the name of a new driver to be added where * the name of the driver may already exist. * * @param name - the name of the driver */ private String buildDriverName(String name) { int count = 0; for (int i = 0, n = savedDrivers.size(); i < n; i++) { DatabaseDriver driver = savedDrivers.get(i); if (driver.getName().startsWith(name)) { count++; } } if (count > 0) { count++; name += " " + count; } return name; } public String toString() { return TITLE; } // ---------------------------------------- // DockedTabView Implementation // ---------------------------------------- public static final String MENU_ITEM_KEY = "viewDrivers"; public static final String PROPERTY_KEY = "system.display.drivers"; /** * Returns the display title for this view. * * @return the title displayed for this view */ public String getTitle() { return TITLE; } /** * Returns the name defining the property name for this docked tab view. * * @return the key */ public String getPropertyKey() { return PROPERTY_KEY; } /** * Returns the name defining the menu cache property * for this docked tab view. * * @return the preferences key */ public String getMenuItemKey() { return MENU_ITEM_KEY; } private class DriversTreeCellRenderer extends AbstractTreeCellRenderer { private Color textBackground; private Color textForeground; private Color selectedBackground; private Color selectedTextForeground; private ImageIcon driverImage; private ImageIcon driverRootImage; public DriversTreeCellRenderer() { driverRootImage = GUIUtilities.loadIcon("DatabaseDrivers16.gif", true); driverImage = GUIUtilities.loadIcon("JDBCDriver16.gif", true); textBackground = UIManager.getColor("Tree.textBackground"); textForeground = UIManager.getColor("Tree.textForeground"); selectedBackground = UIManager.getColor("Tree.selectionBackground"); selectedTextForeground = UIManager.getColor("Tree.selectionForeground"); if (UIUtils.isGtkLookAndFeel()) { setBorderSelectionColor(null); } //setFont(new Font("Dialog", Font.PLAIN, 11)); } public Component getTreeCellRendererComponent(JTree tree, Object value, boolean bSelected, boolean bExpanded, boolean bLeaf, int iRow, boolean bHasFocus) { String labelText = value.toString(); if (value instanceof DefaultTreeRootNode) { setIcon(driverRootImage); } else if (value instanceof DatabaseDriverNode) { setIcon(driverImage); } // Add the text to the cell setText(labelText); // Add a tool tip displaying the name setToolTipText(labelText); selected = bSelected; if(!selected) { setBackground(textBackground); setForeground(textForeground); } else { setBackground(selectedBackground); setForeground(selectedTextForeground); } return this; } } // class DriversTreeCellRenderer /** The tree's popup menu function */ private class PopMenu extends JPopupMenu implements ActionListener { private JMenuItem duplicate; private JMenuItem delete; private JMenuItem properties; private JMenuItem addNewDriver; protected TreePath popupPath; protected DatabaseDriver hover; public PopMenu() { addNewDriver = new JMenuItem("New Driver"); addNewDriver.addActionListener(this); duplicate = new JMenuItem("Duplicate"); duplicate.addActionListener(this); delete = new JMenuItem("Remove"); delete.addActionListener(this); properties = new JMenuItem("Driver Properties"); properties.addActionListener(this); add(addNewDriver); addSeparator(); add(duplicate); add(delete); addSeparator(); add(properties); } protected void setMenuItemsText() { if (hover != null) { String name = hover.getName(); delete.setText("Remove Driver " + name); duplicate.setText("Create Duplicate of Driver " + name); } } public void actionPerformed(ActionEvent e) { try { Object source = e.getSource(); if (source == duplicate) { if (hover != null) { String name = buildDriverName(hover.getName() + " (Copy") + ")"; DatabaseDriver dd = new DatabaseDriver(name); dd.setClassName(hover.getClassName()); dd.setDatabaseType(hover.getType()); dd.setDescription(hover.getDescription()); dd.setId(System.currentTimeMillis()); dd.setPath(hover.getPath()); dd.setURL(hover.getURL()); newDriver(dd); } } else if (source == delete) { if (popupPath != null) { DatabaseDriverNode node = (DatabaseDriverNode)popupPath.getLastPathComponent(); deleteDriver(node); } } else if (source == properties) { reloadView = true; setSelectedDriver(hover); } else if (source == addNewDriver) { newDriver(); } } finally { reloadView = false; hover = null; popupPath = null; } } } // class PopMenu private class MouseHandler extends MouseAdapter { public MouseHandler() {} public void mouseClicked(MouseEvent e) { if (e.getClickCount() < 2) { return; } TreePath path = tree.getPathForLocation(e.getX(), e.getY()); if (path == tree.getSelectionPath()) { valueChanged(new TreeSelectionEvent( tree, path, true, path, path)); } } public void mousePressed(MouseEvent e) { maybeShowPopup(e); } public void mouseReleased(MouseEvent e) { maybeShowPopup(e); } private void maybeShowPopup(MouseEvent e) { if (e.isPopupTrigger()) { if (popupMenu == null) { popupMenu = new PopMenu(); } Point point = new Point(e.getX(), e.getY()); popupMenu.popupPath = tree.getPathForLocation(point.x, point.y); // get the connection at this point popupMenu.hover = getDriverAt(point); if (popupMenu.hover != null) { try { tree.removeTreeSelectionListener(DriversTreePanel.this); popupMenu.setMenuItemsText(); tree.setSelectionPath(popupMenu.popupPath); } finally { tree.addTreeSelectionListener(DriversTreePanel.this); } popupMenu.show(e.getComponent(), point.x, point.y); } } } } // class MouseHandler}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -