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

📄 resourcetreetable.java

📁 It is all about project scheduling. GanttProject is a tool for creating a project schedule by means
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package net.sourceforge.ganttproject;import java.awt.Color;import java.awt.Component;import java.awt.Dimension;import java.awt.Point;import java.awt.Toolkit;import java.awt.event.KeyListener;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.awt.event.ActionListener;import java.awt.event.ActionEvent;import java.text.ParseException;import java.util.ArrayList;import java.util.Collection;import java.util.Date;import java.util.Enumeration;import java.util.Hashtable;import java.util.Iterator;import java.util.List;import java.util.Vector;import javax.swing.Action;import javax.swing.DefaultCellEditor;import javax.swing.ImageIcon;import javax.swing.InputMap;import javax.swing.JComboBox;import javax.swing.JCheckBox;import javax.swing.JComponent;import javax.swing.JPopupMenu;import javax.swing.JScrollBar;import javax.swing.JTable;import javax.swing.JTree;import javax.swing.KeyStroke;import javax.swing.SwingConstants;import javax.swing.SwingUtilities;import javax.swing.event.TreeExpansionEvent;import javax.swing.event.TreeExpansionListener;import javax.swing.table.TableColumn;import javax.swing.tree.DefaultMutableTreeNode;import javax.swing.tree.TreePath;import javax.swing.JCheckBoxMenuItem;import javax.swing.JMenuItem;import javax.swing.JOptionPane;import javax.swing.JTextField;import javax.swing.AbstractAction;import net.sourceforge.ganttproject.gui.ResourceDialogCustomColumn;import net.sourceforge.ganttproject.language.GanttLanguage;import net.sourceforge.ganttproject.resource.HumanResource;import net.sourceforge.ganttproject.resource.ProjectResource;import net.sourceforge.ganttproject.resource.ResourceNode;import net.sourceforge.ganttproject.resource.ResourceColumn;import net.sourceforge.ganttproject.roles.Role;import net.sourceforge.ganttproject.roles.RoleManager;import net.sourceforge.ganttproject.roles.RoleManager.RoleEvent;import net.sourceforge.ganttproject.util.DateUtils;import org.jdesktop.jdnc.JNTreeTable;import org.jdesktop.swing.decorator.AlternateRowHighlighter;import org.jdesktop.swing.decorator.HierarchicalColumnHighlighter;import org.jdesktop.swing.decorator.Highlighter;import org.jdesktop.swing.decorator.HighlighterPipeline;import org.jdesktop.swing.table.TableColumnExt;import org.jdesktop.swing.treetable.TreeTableModel;public class ResourceTreeTable extends GPTreeTableBase {    private RoleManager myRoleManager;    /**     * Unique instance of GanttLanguage.     */    private static GanttLanguage language = GanttLanguage.getInstance();    /**     * the treetable data model     */    private ResourceTreeTableModel ttModel;    /**     * PopupMenu showed on right click on the table header.     */    private JPopupMenu popupMenu = null;    /** Component used to delete a custom column */    JMenuItem delColumnItem = null;    /** Position where the user clicked on the table header */    private Point clickPoint = null;    /** number of visible columns */    private static int colCount = 0;    /**     * Creates an instance of GanttTreeTable with the given TreeTableModel.     *      * @param model     *            TreeTableModel.     */    public ResourceTreeTable(TreeTableModel model) {        super(model);        ttModel = (ResourceTreeTableModel) model;        this.setTreeTableModel(model);        initTreeTable();    }    public boolean isVisible(DefaultMutableTreeNode node) {        return this.getTreeTable().getTree().isVisible(                new TreePath(node.getPath()));    }    public void setRowHeight(int rowHeight) {        super.setRowHeight(rowHeight);    }    /**     * Initialize the treetable. Addition of various listeners, tree's icons,     */    public void initTreeTable() {        // ttModel = (ResourceTreeTableModel) this.getTreeTableModel();        Enumeration enumeration = getTable().getColumnModel().getColumns();        Collection lToDel = new ArrayList();        while (enumeration.hasMoreElements()) {            TableColumnExt tc = (TableColumnExt) enumeration.nextElement();            lToDel.add(tc);        }        Iterator it = lToDel.iterator();        while (it.hasNext())            getTable().removeColumn((TableColumn) it.next());        getTable().setAutoCreateColumnsFromModel(false);        getTable().setAutoResizeMode(JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);        TableColumnExt tce1 = new TableColumnExt(0);        tce1.setTitle(ResourceTreeTableModel.strResourceName);        TableColumnExt tce2 = new TableColumnExt(1);        tce2.setTitle(ResourceTreeTableModel.strResourceRole);        TableColumnExt tce3 = new TableColumnExt(2);        tce3.setTitle(ResourceTreeTableModel.strResourceEMail);        TableColumnExt tce4 = new TableColumnExt(3);        tce4.setTitle(ResourceTreeTableModel.strResourcePhone);        TableColumnExt tce5 = new TableColumnExt(4);        tce5.setTitle(ResourceTreeTableModel.strResourceRoleForTask);        TableColumnExt tce6 = new TableColumnExt(5);        tce6.setTitle(ResourceTreeTableModel.strResourceID);        TableColumnExt tce7 = new TableColumnExt(6);        tce7.setTitle(ResourceTreeTableModel.strResourceLineNumber);                /* adding the columns on the screen and to the data model */        this.addMandatoryColumn(new ResourceColumn(tce1,                ttModel.useNextIndex(), String.class));        this.addMandatoryColumn(new ResourceColumn(tce2,                ttModel.useNextIndex(), String.class));        this.addMandatoryColumn(new ResourceColumn(tce3,                ttModel.useNextIndex(), String.class));        this.addMandatoryColumn(new ResourceColumn(tce4,                ttModel.useNextIndex(), String.class));        this.addMandatoryColumn(new ResourceColumn(tce5,                ttModel.useNextIndex(), String.class));        this.addMandatoryColumn(new ResourceColumn(tce6,                ttModel.useNextIndex(), Integer.class));        // It adds the line number column          // which is not ticked in the popup  menu (false).        ResourceColumn LineNumberResCol = new ResourceColumn(tce7,        		ttModel.useNextIndex(), String.class, false);        this.addMandatoryColumn(LineNumberResCol);        // hides the line number column        hideColumn(LineNumberResCol);        initColumnsAlignements();        ArrayList cols = ttModel.getColumns();        for (int i=2; i<cols.size(); i++) {            hideColumn((ResourceColumn) cols.get(i));        }        // Highlighters to ease the reading of the table.        setHighlighters(new HighlighterPipeline(new Highlighter[] {                AlternateRowHighlighter.quickSilver,                new HierarchicalColumnHighlighter() }));        setShowHorizontalLines(true);        setHasColumnControl(true);        ImageIcon icon = new ImageIcon(getClass().getResource(                "/icons/simple_task.gif"));        setOpenIcon(icon);        setClosedIcon(icon);        setCollapsedIcon(new ImageIcon(getClass()                .getResource("/icons/plus.gif")));        setExpandedIcon(new ImageIcon(getClass()                .getResource("/icons/minus.gif")));        setLeafIcon(icon);        this.getTreeTable().getParent().setBackground(Color.WHITE);        setUpRolesRenderer();        setUpAssignementRolesRenderer();        // getTable().getTableHeader().addMouseListener(new MouseListener(){        //        // public void mouseClicked(MouseEvent arg0) {        // // TODO Auto-generated method stub        //                        // }        //        // public void mousePressed(MouseEvent arg0) {        // // TODO Auto-generated method stub        //                        // }        //        // public void mouseReleased(MouseEvent e) {        // Enumeration en = getTable().getColumnModel().getColumns();        // while(en.hasMoreElements())        // {        // TableColumn tc = (TableColumn)en.nextElement();        // tc.setPreferredWidth(tc.getWidth());        // }        // }        //        // public void mouseEntered(MouseEvent arg0) {        // // TODO Auto-generated method stub        //                        // }        //        // public void mouseExited(MouseEvent arg0) {        // // TODO Auto-generated method stub        //                        // }        //                    // });        this.getTreeTable().getTree().addTreeExpansionListener(                new TreeExpansionListener() {                    public void treeExpanded(TreeExpansionEvent arg0) {                        Mediator.getGanttProjectSingleton().repaint2();                    }                    public void treeCollapsed(TreeExpansionEvent arg0) {                        Mediator.getGanttProjectSingleton().repaint2();                    }                });        this.setPreferredSize(new Dimension(this.getPreferredSize().width, 0));        /* listener provoking the popup menu for the column management */        this.getTable().getTableHeader().addMouseListener(new MouseAdapter() {            public void mousePressed(MouseEvent e) {                handlePopupTrigger(e);            }            public void mouseReleased(MouseEvent e) {                handlePopupTrigger(e);            }            private void handlePopupTrigger(MouseEvent e) {                if (e.isPopupTrigger()) {                    clickPoint = e.getPoint();                    String name = getTable().getColumnName(                            getTable().columnAtPoint(clickPoint));                    createPopup();                    /* the delete button is activated only for removable columns */                    if (ttModel.checkRemovableCol(name))                        delColumnItem.setEnabled(true);                    else                        delColumnItem.setEnabled(false);                    Component c = (Component) e.getSource();                    popupMenu.show(c, e.getX(), e.getY());                }            }        });    }    /* creates the popup menu for the column management */    private void createPopup() {        popupMenu = new JPopupMenu();        /* show columns list */        ArrayList cols = ttModel.getColumns();        ResourceColumn col;        int size = cols.size();        for (int i = 0; i < size; i++) {            col = (ResourceColumn) cols.get(i);            JCheckBoxMenuItem item = new JCheckBoxMenuItem(col.getTitle(), col                    .isVisible());            item.addActionListener(new ColumnHandler(col));            popupMenu.add(item);        }        popupMenu.addSeparator();        /* 'display all columns' button */        JMenuItem showAllItem = new JMenuItem(language.getText("displayAll"));        showAllItem.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent e) {                /* TODO the undo management */                Mediator.getGanttProjectSingleton().getUndoManager()                        .undoableEdit("displayAllColumns", new Runnable() {                            public void run() {                                /* sets all the columns visible */                                ArrayList cols = ttModel.getColumns();                                ResourceColumn col;                                int size = cols.size();                                for (int i = 0; i < size; i++) {                                    col = (ResourceColumn) cols.get(i);                                    if (!col.isVisible()) {                                        col.setVisible(true);                                        showColumn(col);                                    }                                }                                Mediator.getGanttProjectSingleton()                                        .setAskForSave(true);                            }                        });            }        });        popupMenu.add(showAllItem);

⌨️ 快捷键说明

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