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

📄 gantttreetable.java

📁 It is all about project scheduling. GanttProject is a tool for creating a project schedule by means
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
package net.sourceforge.ganttproject;import java.awt.Color;import java.awt.Component;import java.awt.Dimension;import java.awt.Point;import java.awt.Rectangle;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.FocusAdapter;import java.awt.event.FocusEvent;import java.awt.event.KeyListener;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.text.ParseException;import java.util.ArrayList;import java.util.Collection;import java.util.Collections;import java.util.Date;import java.util.Enumeration;import java.util.EventListener;import java.util.EventObject;import java.util.GregorianCalendar;import java.util.HashMap;import java.util.Iterator;import java.util.LinkedHashMap;import java.util.List;import java.util.Map;import java.util.Map.Entry;import javax.swing.Action;import javax.swing.ActionMap;import javax.swing.DefaultCellEditor;import javax.swing.ImageIcon;import javax.swing.InputMap;import javax.swing.JCheckBoxMenuItem;import javax.swing.JComponent;import javax.swing.JMenuItem;import javax.swing.JPopupMenu;import javax.swing.JScrollBar;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.JTextField;import javax.swing.JTree;import javax.swing.KeyStroke;import javax.swing.SwingConstants;import javax.swing.SwingUtilities;import javax.swing.event.CellEditorListener;import javax.swing.event.ChangeEvent;import javax.swing.event.ListSelectionEvent;import javax.swing.event.TableColumnModelEvent;import javax.swing.event.TableColumnModelListener;import javax.swing.event.TableModelEvent;import javax.swing.event.TableModelListener;import javax.swing.event.TreeModelEvent;import javax.swing.event.TreeModelListener;import javax.swing.table.DefaultTableColumnModel;import javax.swing.table.TableCellEditor;import javax.swing.table.TableColumn;import javax.swing.table.TableColumnModel;import javax.swing.text.JTextComponent;import javax.swing.tree.TreePath;import net.sourceforge.ganttproject.delay.Delay;import net.sourceforge.ganttproject.gui.GanttDialogCustomColumn;import net.sourceforge.ganttproject.language.GanttLanguage;import net.sourceforge.ganttproject.language.GanttLanguage.Event;import net.sourceforge.ganttproject.language.GanttLanguage.Listener;import net.sourceforge.ganttproject.task.CustomColumn;import net.sourceforge.ganttproject.task.CustomColumnsException;import net.sourceforge.ganttproject.task.CustomColumnsManager;import net.sourceforge.ganttproject.task.Task;import net.sourceforge.ganttproject.task.TaskContainmentHierarchyFacade;import net.sourceforge.ganttproject.task.TaskNode;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;/** * Treetable used to displayed tabular data and hierarchical data. *  * @author bbaranne * @version 1.0 (20050301) (yyyymmdd) */public class GanttTreeTable extends GPTreeTableBase implements GanttLanguage.Listener {    /**     * Unique instance of GanttLanguage.     */    private static GanttLanguage language = GanttLanguage.getInstance();    /**     * PopupMenu showed on right click (window, linux) on the table header.     */    private JPopupMenu popupMenu;    /**     * Map ColumnName -> MenuItem     */    private Map mapColNameMenuItem;    /**     * Point where the user has just right clicked on the table header.     */    private Point clickPoint = null;    /**     * model of the treetable.     */    private final GanttTreeTableModel ttModel;    /**     * stores the tableColum associated with there ColumnKeeper. it is used to     * retore the column at the same index it has been removed.     */    private final Map mapTableColumnColumnKeeper = new LinkedHashMap();    /**     * Menu item to delete columns.     */    private JMenuItem jmiDeleteColumn;    DisplayedColumnsList listDisplayedColumns = null;    private Listener myLanguageListener;    /**     * Creates an instance of GanttTreeTable with the given TreeTableModel.     *      * @param model     *            TreeTableModel.     */    public GanttTreeTable(GanttTreeTableModel model) {        super(model);        GanttLanguage.getInstance().addListener(this);        initTreeTable();        this.ttModel = model;    }    void setAction(Action action) {        addAction(action, (KeyStroke) action.getValue(Action.ACCELERATOR_KEY));        // Add the action to the component    }    void addAction(Action action, KeyStroke keyStroke) {        InputMap inputMap = getInputMap();        inputMap.put(keyStroke, action.getValue(Action.NAME));        getActionMap().put(action.getValue(Action.NAME), action);    }    private void updateDisplayedColumnsOrder() {        Iterator it = this.listDisplayedColumns.iterator();        while (it.hasNext()) {            DisplayedColumn dc = (DisplayedColumn) it.next();            if (dc.isDisplayed()) {                String id = dc.getID();                String name = getNameForId(id);                int viewIndex = getTable().convertColumnIndexToView(                        getColumn(name).getModelIndex());                dc.setOrder(viewIndex);                dc.setWidth(getColumn(name).getPreferredWidth());            }        }    }    public DisplayedColumnsList getDisplayColumns() {        updateDisplayedColumnsOrder();        return this.listDisplayedColumns;    }    public void setDisplayedColumns(DisplayedColumnsList displayedColumns) {        DisplayedColumnsList l = (DisplayedColumnsList) displayedColumns                .clone();        if (displayedColumns.size() != 0) {            this.listDisplayedColumns = displayedColumns;            displayAllColumns();            hideAllColumns();            this.listDisplayedColumns = l;        }        Collections.sort(this.listDisplayedColumns);        Iterator it = this.listDisplayedColumns.iterator();        while (it.hasNext()) {            DisplayedColumn dc = (DisplayedColumn) it.next();            String id = dc.getID();            String name = getNameForId(id);            if (dc.displayed)                displayColumn(name);            else                hideColumn(name);        }    }    void reloadColumns() {        List columns = Collections.list(getTable().getColumnModel()                .getColumns());        for (int i = 0; i < columns.size(); i++) {            getTable().removeColumn((TableColumn) columns.get(i));        }        if (myLanguageListener != null) {            GanttLanguage.getInstance().removeListener(myLanguageListener);        }        final TableColumnExt tce1 = new TableColumnExt(0);        final TableColumnExt tce2 = new TableColumnExt(1);        final TableColumnExt tce3 = new TableColumnExt(2);        final TableColumnExt tce4 = new TableColumnExt(3);        final TableColumnExt tce5 = new TableColumnExt(4);        final TableColumnExt tce6 = new TableColumnExt(5);        final TableColumnExt tce7 = new TableColumnExt(6);        final TableColumnExt tce8 = new TableColumnExt(7);        final TableColumnExt tce9 = new TableColumnExt(8);        final TableColumnExt tce10 = new TableColumnExt(9);        final TableColumnExt tce11 = new TableColumnExt(10);        final TableColumnExt tce12 = new TableColumnExt(11);        final TableColumnExt tce13 = new TableColumnExt(12);        myLanguageListener = new GanttLanguage.Listener() {            public void languageChanged(Event event) {                GanttTreeTable.this.ttModel.languageChanged(event);                tce1.setTitle(GanttTreeTableModel.strColType);                tce2.setTitle(GanttTreeTableModel.strColPriority);                tce3.setTitle(GanttTreeTableModel.strColInfo);                tce4.setTitle(GanttTreeTableModel.strColName);                tce5.setTitle(GanttTreeTableModel.strColBegDate);                tce6.setTitle(GanttTreeTableModel.strColEndDate);                tce7.setTitle(GanttTreeTableModel.strColDuration);                tce8.setTitle(GanttTreeTableModel.strColCompletion);                tce9.setTitle(GanttTreeTableModel.strColCoordinator);                tce10.setTitle(GanttTreeTableModel.strColPredecessors);                tce11.setTitle(GanttTreeTableModel.strColID);                tce12.setTitle(GanttTreeTableModel.strAssignments);                tce13.setTitle(GanttTreeTableModel.strColLineNumber);            }        };        GanttLanguage.getInstance().addListener(myLanguageListener);        this.addColumn(tce1);        this.addColumn(tce2);        this.addColumn(tce3);        this.addColumn(tce4);        this.addColumn(tce5);        this.addColumn(tce6);        this.addColumn(tce7);        this.addColumn(tce8);        this.addColumn(tce9);        this.addColumn(tce10);        this.addColumn(tce11);        this.addColumn(tce12);        this.addColumn(tce13);        {            listDisplayedColumns = new DisplayedColumnsList();            // Type            DisplayedColumn dc1 = new DisplayedColumn(getIdForName(tce1                    .getTitle()));            dc1.setDisplayed(false);            dc1.setOrder(this.getTable().convertColumnIndexToView(                    tce1.getModelIndex()));            dc1.setWidth(tce1.getPreferredWidth());            listDisplayedColumns.add(dc1);            // Priority            DisplayedColumn dc2 = new DisplayedColumn(getIdForName(tce2                    .getTitle()));            dc2.setDisplayed(false);            dc2.setOrder(this.getTable().convertColumnIndexToView(                    tce2.getModelIndex()));            dc2.setWidth(tce2.getPreferredWidth());            listDisplayedColumns.add(dc2);            // Info            DisplayedColumn dc3 = new DisplayedColumn(getIdForName(tce3                    .getTitle()));            dc3.setDisplayed(false);            dc3.setOrder(this.getTable().convertColumnIndexToView(                    tce3.getModelIndex()));            dc3.setWidth(tce3.getPreferredWidth());            listDisplayedColumns.add(dc3);            // Name            DisplayedColumn dc4 = new DisplayedColumn(getIdForName(tce4                    .getTitle()));            dc4.setDisplayed(true);            dc4.setOrder(this.getTable().convertColumnIndexToView(                    tce4.getModelIndex()));            dc4.setWidth(tce4.getPreferredWidth());            listDisplayedColumns.add(dc4);            // Begin date            DisplayedColumn dc5 = new DisplayedColumn(getIdForName(tce5                    .getTitle()));            dc5.setDisplayed(true);            dc5.setOrder(this.getTable().convertColumnIndexToView(                    tce5.getModelIndex()));            dc5.setWidth(tce5.getPreferredWidth());            listDisplayedColumns.add(dc5);            // End date            DisplayedColumn dc6 = new DisplayedColumn(getIdForName(tce6                    .getTitle()));            dc6.setDisplayed(true);            dc6.setOrder(this.getTable().convertColumnIndexToView(                    tce6.getModelIndex()));            dc6.setWidth(tce6.getPreferredWidth());            listDisplayedColumns.add(dc6);            // Duration            DisplayedColumn dc7 = new DisplayedColumn(getIdForName(tce7                    .getTitle()));            dc7.setDisplayed(false);            dc7.setOrder(this.getTable().convertColumnIndexToView(                    tce7.getModelIndex()));            dc7.setWidth(tce7.getPreferredWidth());            listDisplayedColumns.add(dc7);            // Completion            DisplayedColumn dc8 = new DisplayedColumn(getIdForName(tce8                    .getTitle()));            dc8.setDisplayed(false);            dc8.setOrder(this.getTable().convertColumnIndexToView(                    tce8.getModelIndex()));            dc8.setWidth(tce8.getPreferredWidth());            listDisplayedColumns.add(dc8);            // Coordinator            DisplayedColumn dc9 = new DisplayedColumn(getIdForName(tce9                    .getTitle()));            dc9.setDisplayed(false);            dc9.setOrder(this.getTable().convertColumnIndexToView(                    tce9.getModelIndex()));            dc9.setWidth(tce9.getPreferredWidth());            listDisplayedColumns.add(dc9);            // Predecessors            DisplayedColumn dc10 = new DisplayedColumn(getIdForName(tce10

⌨️ 快捷键说明

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