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

📄 driverstreepanel.java

📁 eq跨平台查询工具源码 eq跨平台查询工具源码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * DriversTreePanel.java * * Copyright (C) 2002, 2003, 2004, 2005, 2006 Takis Diakoumis * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. * */package org.executequery.gui.drivers;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Component;import java.awt.Point;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.util.Enumeration;import java.util.Vector;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JMenuItem;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JPopupMenu;import javax.swing.JScrollPane;import javax.swing.JTree;import javax.swing.UIManager;import javax.swing.event.TreeSelectionEvent;import javax.swing.event.TreeSelectionListener;import javax.swing.tree.DefaultMutableTreeNode;import javax.swing.tree.TreeNode;import javax.swing.tree.TreePath;import org.executequery.GUIUtilities;import org.executequery.JDBCProperties;import org.underworldlabs.swing.tree.DefaultTreeRootNode;import org.underworldlabs.swing.tree.DynamicTree;import org.underworldlabs.swing.tree.AbstractTreeCellRenderer;import org.underworldlabs.swing.toolbar.PanelToolBar;import org.executequery.databasemediators.DatabaseDriver;import org.executequery.gui.*;import org.underworldlabs.swing.plaf.UIUtils;/* ---------------------------------------------------------- * CVS NOTE: Changes to the CVS repository prior to the  *           release of version 3.0.0beta1 has meant a  *           resetting of CVS revision numbers. * ---------------------------------------------------------- *//** * * @author   Takis Diakoumis * @version  $Revision: 1.9 $ * @date     $Date: 2006/09/21 14:33:02 $ */public class DriversTreePanel extends AbstractDockedTabActionPanel                              implements TreeSelectionListener {        public static final String TITLE = "Drivers";        /** the tree display */    private DynamicTree tree;        /** saved drivers collection */    private Vector<DatabaseDriver> savedDrivers;        /** the driver display panel */    private DriverViewPanel driversPanel;    /** the tree popup menu */    private PopMenu popupMenu;    /** whether to reload the panel view */    private boolean reloadView;    // -------------------------------------    // tool bar buttons    /** move connection up button */    private JButton upButton;        /** move connection down button */    private JButton downButton;    /** new connection button */    private JButton newDriverButton;    /** delete connection button */    private JButton deleteDriverButton;    // -------------------------------------    /** Creates a new instance of DriversTreePanel */    public DriversTreePanel() {        super(new BorderLayout());        init();    }        private void init() {        // load the drivers        savedDrivers = JDBCProperties.getDriversVector();        DatabaseDriverNode child = null;        DefaultMutableTreeNode root = new DefaultTreeRootNode("JDBC Drivers");        for (int i = 0, k = savedDrivers.size(); i < k; i++) {            // add the driver to the root node            root.add(new DatabaseDriverNode(savedDrivers.get(i)));            // add to the cache        }        // init the tree        tree = new DynamicTree(root);        tree.setCellRenderer(new DriversTreeCellRenderer());        tree.addTreeSelectionListener(this);        tree.addMouseListener(new MouseHandler());                // ---------------------------------------        // the tool bar                PanelToolBar tools = new PanelToolBar();        newDriverButton = tools.addButton(                this, "newDriver",                 GUIUtilities.getAbsoluteIconPath("NewJDBCDriver16.gif"),                "New JDBC driver");        deleteDriverButton = tools.addButton(                this, "deleteDriver",                 GUIUtilities.getAbsoluteIconPath("Delete16.gif"),                "Remove driver");        upButton = tools.addButton(                this, "moveDriverUp",                 GUIUtilities.getAbsoluteIconPath("Up16.gif"),                "Move up");        downButton = tools.addButton(                this, "moveDriverDown",                 GUIUtilities.getAbsoluteIconPath("Down16.gif"),                "Move down");                // add the tools and tree to the panel        add(tools, BorderLayout.NORTH);        add(new JScrollPane(tree), BorderLayout.CENTER);                enableButtons(false);                // make sure we have a display panel        //checkDriversPanel();    }    private void enableButtons(boolean enable) {        upButton.setEnabled(enable);        downButton.setEnabled(enable);        deleteDriverButton.setEnabled(enable);    }    public void moveDriverUp() {        tree.moveSelectionUp();        Object object = tree.getLastPathComponent();        moveNode((DatabaseDriverNode)object, DynamicTree.MOVE_UP);    }        public void moveDriverDown() {        tree.moveSelectionDown();        // adjust the position of the connection        Object object = tree.getLastPathComponent();        moveNode((DatabaseDriverNode)object, DynamicTree.MOVE_DOWN);    }        public void newDriver() {        String name = buildDriverName("New Driver");        newDriver(new DatabaseDriver(System.currentTimeMillis(), name));    }    /**     * Adds a new driver with the specified driver as the base     * for the new one.     *     * @param driver - the driver the new is to be based on     */    public void newDriver(DatabaseDriver driver) {        if (driver == null) {            String name = buildDriverName("New Driver");            driver = new DatabaseDriver(System.currentTimeMillis(), name);        }        savedDrivers.add(driver);        DatabaseDriverNode node = new DatabaseDriverNode(driver);        tree.addToRoot(node);    }    public void deleteDriver() {        deleteDriver(null);    }        public void deleteDriver(DatabaseDriverNode node) {        boolean isSelectedNode = false;        if (node == null) {            Object object = tree.getLastPathComponent();            node = (DatabaseDriverNode)object;            isSelectedNode = true;        }        else {            if (tree.getLastPathComponent() == node) {                isSelectedNode = true;            }        }        DatabaseDriver driver = node.getDriver();        // check if they're trying to delete the ODBC driver        if (driver.getId() == JDBCProperties.DEFAULT_ODBC_ID) {            GUIUtilities.displayErrorMessage(                    "The ODBC driver definition is a built-in and can not be removed");            return;        }                int yesNo = GUIUtilities.displayConfirmCancelDialog(                        "Are you sure you want to delete the driver " +                        driver + " ?");        if (yesNo != JOptionPane.YES_OPTION) {            return;        }        // the next selection index will be the index of         // the one being removed - (index - 1)        int index = savedDrivers.indexOf(driver);        // remove from the connections        savedDrivers.remove(index);                if (index > savedDrivers.size() - 1) {            index = savedDrivers.size() - 1;        }        if (isSelectedNode) {            String prefix = savedDrivers.get(index).getName();            tree.removeSelection(prefix);        }        else {            tree.removeNode(node);        }        // save the drivers        driversPanel.saveDrivers();    }        /**      * Sets the selected tree node to the specified driver.     *     * @param driver - the driver to select     */    public void setSelectedDriver(DatabaseDriver driver) {        DefaultMutableTreeNode node = null;                // retrieve the root node and loop through        DefaultMutableTreeNode root = tree.getRootNode();        for (Enumeration i = root.children(); i.hasMoreElements();) {            DefaultMutableTreeNode _node = (DefaultMutableTreeNode)i.nextElement();            Object userObject = _node.getUserObject();            // make sure its a connection object            if (userObject == driver) {                node = _node;                break;            }        }                // select the node path        if (node != null) {            TreePath path = new TreePath(node.getPath());            tree.scrollPathToVisible(path);            tree.setSelectionPath(path);                        if (reloadView) {                Object object = tree.getLastPathComponent();                if (object instanceof DatabaseDriverNode) {                    checkDriversPanel();                    DatabaseDriverNode _node = (DatabaseDriverNode)object;                    driversPanel.valueChanged(_node);                }            }        }    }    private void moveNode(DatabaseDriverNode node, int direction) {        DatabaseDriver driver = node.getDriver();        int currentIndex = savedDrivers.indexOf(driver);        if (currentIndex == 0 && direction == DynamicTree.MOVE_UP) {            return;        }                int newIndex = -1;        if (direction == DynamicTree.MOVE_UP) {            newIndex = currentIndex - 1;        } else {            newIndex = currentIndex + 1;            if (newIndex > (savedDrivers.size() - 1)) {                return;            }        }        savedDrivers.remove(currentIndex);        savedDrivers.insertElementAt(driver, newIndex);        // save the drivers        driversPanel.saveDrivers();    }        /**     * Indicates that a node name has changed and fires a call

⌨️ 快捷键说明

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