📄 gantttreetable.java
字号:
.getTitle())); dc10.setDisplayed(false); dc10.setOrder(this.getTable().convertColumnIndexToView( tce10.getModelIndex())); dc10.setWidth(tce10.getPreferredWidth()); listDisplayedColumns.add(dc10); // ID DisplayedColumn dc11 = new DisplayedColumn(getIdForName(tce11 .getTitle())); dc11.setDisplayed(false); dc11.setOrder(this.getTable().convertColumnIndexToView( tce11.getModelIndex())); dc11.setWidth(tce11.getPreferredWidth()); listDisplayedColumns.add(dc11); // Assignments DisplayedColumn dc12 = new DisplayedColumn(getIdForName(tce12 .getTitle())); dc12.setDisplayed(false); dc12.setOrder(this.getTable().convertColumnIndexToView( tce12.getModelIndex())); dc12.setWidth(tce11.getPreferredWidth()); listDisplayedColumns.add(dc12); // Line number DisplayedColumn dc13 = new DisplayedColumn(getIdForName(tce12 .getTitle())); dc13.setDisplayed(false); dc13.setOrder(this.getTable().convertColumnIndexToView( tce12.getModelIndex())); dc13.setWidth(tce12.getPreferredWidth()); listDisplayedColumns.add(dc13); // this.setDisplayedColumns(listDisplayedColumns); } { this.mapTableColumnColumnKeeper.clear(); this.mapTableColumnColumnKeeper.put(tce1, new ColumnKeeper(tce1)); this.mapTableColumnColumnKeeper.put(tce2, new ColumnKeeper(tce2)); this.mapTableColumnColumnKeeper.put(tce3, new ColumnKeeper(tce3)); this.mapTableColumnColumnKeeper.put(tce4, new ColumnKeeper(tce4)); this.mapTableColumnColumnKeeper.put(tce5, new ColumnKeeper(tce5)); this.mapTableColumnColumnKeeper.put(tce6, new ColumnKeeper(tce6)); this.mapTableColumnColumnKeeper.put(tce7, new ColumnKeeper(tce7)); this.mapTableColumnColumnKeeper.put(tce8, new ColumnKeeper(tce8)); this.mapTableColumnColumnKeeper.put(tce9, new ColumnKeeper(tce9)); this.mapTableColumnColumnKeeper.put(tce10, new ColumnKeeper(tce10)); this.mapTableColumnColumnKeeper.put(tce11, new ColumnKeeper(tce11)); this.mapTableColumnColumnKeeper.put(tce12, new ColumnKeeper(tce12)); this.mapTableColumnColumnKeeper.put(tce13,new ColumnKeeper(tce13)); } initColumnsAlignements(); getTable().getColumnExt(GanttTreeTableModel.strColBegDate) .setCellEditor(newDateCellEditor()); getTable().getColumnExt(GanttTreeTableModel.strColEndDate) .setCellEditor(newDateCellEditor()); getTable().getColumnExt(GanttTreeTableModel.strColName).setCellEditor( new NameCellEditor()); // createPopupMenu(); if (listDisplayedColumns != null) { this.setDisplayedColumns(listDisplayedColumns); } else { this.displayAllColumns(); } Runnable t = new Runnable() { public void run() { calculateWidth(); revalidate(); } }; SwingUtilities.invokeLater(t); } /** * Initialize the treetable. Addition of various listeners, tree's icons, */ void initTreeTable() { clickPoint = null; if (Mediator.getCustomColumnsManager() == null) { Mediator .registerCustomColumnsManager(new CustomColumnsManager(this)); } mapColNameMenuItem = new HashMap(); getTreeTableModel().addTreeModelListener(new TreeModelListener() { public void treeNodesChanged(TreeModelEvent arg0) { } public void treeNodesInserted(TreeModelEvent arg0) { } public void treeNodesRemoved(TreeModelEvent arg0) { } public void treeStructureChanged(TreeModelEvent arg0) { } }); getTable().setAutoCreateColumnsFromModel(false); getTable().setAutoResizeMode(JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS); // the model must implement TableColumnModelListener // Highlighters to ease the reading of the table. // set the CellEditor for the dates. setShowHorizontalLines(true); setOpenIcon(null); setClosedIcon(null); setCollapsedIcon(new ImageIcon(getClass() .getResource("/icons/plus.gif"))); setExpandedIcon(new ImageIcon(getClass() .getResource("/icons/minus.gif"))); setLeafIcon(null); this.setHasColumnControl(false); // this.getTable().moveColumn(0,2); // List l = new ArrayList(); // DisplayedColumn dc1 = new DisplayedColumn("tpd3"); // DisplayedColumn dc2 = new DisplayedColumn("tpd8"); // dc1.setDisplayed(true); // dc2.setDisplayed(true); // l.add(dc1); // l.add(dc2); // this.setDisplayedColumns(l); // // hideColumn("Name"); this.getTreeTable().getParent().setBackground(Color.WHITE); // EventListener listeners[] = this.getTreeTable().getParent() // .getListeners(MouseListener.class); // for (int i = 0; i < listeners.length; i++) // this.getTreeTable().getParent().removeMouseListener( // (MouseListener) listeners[i]); this.getTreeTable().getParent().addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { e.consume(); if (e.getClickCount() == 1) Mediator.getGanttProjectSingleton().getTree() .selectTreeRow(-1); else if (e.getClickCount() == 2 && e.getButton() == MouseEvent.BUTTON1) { Mediator.getGanttProjectSingleton().getUndoManager() .undoableEdit("New Task by click", new Runnable() { public void run() { Mediator.getGanttProjectSingleton() .newTask(); } }); } } }); { InputMap inputMap = getInputMap(); inputMap.setParent(getTreeTable().getInputMap( JComponent.WHEN_FOCUSED)); getTreeTable().setInputMap(JComponent.WHEN_FOCUSED, inputMap); ActionMap actionMap = getActionMap(); actionMap.setParent(getTreeTable().getActionMap()); getTreeTable().setActionMap(actionMap); } { getTable().getColumnModel().addColumnModelListener( (TableColumnModelListener) this.getTreeTableModel()); getTable().getModel().addTableModelListener(new ModelListener()); getTable().getTableHeader().addMouseListener( new HeaderMouseListener()); // The following is used to store the new index of a moved column in // order // to restore it properly. getTable().getColumnModel().addColumnModelListener( new TableColumnModelListener() { public void columnAdded(TableColumnModelEvent e) { // nothing to do } public void columnRemoved(TableColumnModelEvent e) { // nothing to do } public void columnMoved(TableColumnModelEvent e) { DefaultTableColumnModel o = (DefaultTableColumnModel) e .getSource(); TableColumn tc = o.getColumn(e.getFromIndex()); ColumnKeeper ck = ((ColumnKeeper) mapTableColumnColumnKeeper .get(tc)); if (ck != null) ck.setInitIndex(e.getToIndex()); if (Mediator.getGanttProjectSingleton() != null) Mediator.getGanttProjectSingleton() .setAskForSave(true); updateDisplayedColumnsOrder(); } public void columnMarginChanged(ChangeEvent e) { // nothing to do } public void columnSelectionChanged(ListSelectionEvent e) { // nothing to do } }); } setHighlighters(new HighlighterPipeline(new Highlighter[] { AlternateRowHighlighter.quickSilver, new HierarchicalColumnHighlighter() })); reloadColumns(); } void addScrollPaneMouseListener(MouseListener ml) { this.getTreeTable().getParent().addMouseListener(ml); } private void initColumnsAlignements() { // set the columns horizontal aligment. It also associate an // appropiate renderer according to the column class. setColumnHorizontalAlignment(GanttTreeTableModel.strColType, SwingConstants.CENTER); setColumnHorizontalAlignment(GanttTreeTableModel.strColPriority, SwingConstants.CENTER); setColumnHorizontalAlignment(GanttTreeTableModel.strColInfo, SwingConstants.CENTER); // setColumnHorizontalAlignment(GanttTreeTableModel.strColName, // SwingConstants.LEFT); setColumnHorizontalAlignment(GanttTreeTableModel.strColBegDate, SwingConstants.CENTER); setColumnHorizontalAlignment(GanttTreeTableModel.strColEndDate, SwingConstants.CENTER); setColumnHorizontalAlignment(GanttTreeTableModel.strColDuration, SwingConstants.CENTER); setColumnHorizontalAlignment(GanttTreeTableModel.strColCompletion, SwingConstants.CENTER); setColumnHorizontalAlignment(GanttTreeTableModel.strColCoordinator, SwingConstants.CENTER); setColumnHorizontalAlignment(GanttTreeTableModel.strColPredecessors, SwingConstants.RIGHT); setColumnHorizontalAlignment(GanttTreeTableModel.strColID, SwingConstants.CENTER); setColumnHorizontalAlignment(GanttTreeTableModel.strAssignments, SwingConstants.CENTER); // Set the columns widths getTable().getColumnExt(GanttTreeTableModel.strColID) .setPreferredWidth(32); getTable().getColumnExt(GanttTreeTableModel.strColType) .setPreferredWidth(32); getTable().getColumnExt(GanttTreeTableModel.strColPriority) .setPreferredWidth(42); getTable().getColumnExt(GanttTreeTableModel.strColInfo) .setPreferredWidth(32); getTable().getColumnExt(GanttTreeTableModel.strColName) .setPreferredWidth(120); getTable().getColumnExt(GanttTreeTableModel.strColDuration) .setPreferredWidth(50); // getTable().getColumnExt(GanttTreeTableModel.strColType).setMaxWidth(32); // getTable().getColumnExt(GanttTreeTableModel.strColPriority).setMaxWidth(42); // getTable().getColumnExt(GanttTreeTableModel.strColInfo).setMaxWidth(32); // getTable().getColumnExt(GanttTreeTableModel.strColName).setMaxWidth(800); // getTable().getColumnExt(GanttTreeTableModel.strColBegDate).setMaxWidth(300); // getTable().getColumnExt(GanttTreeTableModel.strColEndDate).setMaxWidth(300); // getTable().getColumnExt(GanttTreeTableModel.strColDuration).setMaxWidth(300); // getTable().getColumnExt(GanttTreeTableModel.strColCompletion).setMaxWidth(300); // getTable().getColumnExt(GanttTreeTableModel.strColCoordinator).setMaxWidth(300); } void calculateWidth() { int width = 0; int nbCol = getTable().getColumnCount(); for (int i = 0; i < nbCol; i++) { TableColumnExt tce = getTable().getColumnExt(i); if (tce.isVisible()) width += tce.getPreferredWidth(); } getTable().setPreferredScrollableViewportSize(new Dimension(width, 0)); } /** * Creates the popupMenu used to hide/show columns and to add customs * columns. It will associate each tablecolumn with an ColumnKeeper in * charge of adding and removing the tablecolumn. */ private void createPopupMenu() { // Iterator it = mapTableColumnColumnKeeper.keySet().iterator(); mapColNameMenuItem.clear(); popupMenu = new JPopupMenu(); TableColumnModel tcModel = this.getTable().getColumnModel(); // int nbCol = tcModel.getColumnCount(); // int nbCol = mapTableColumnColumnKeeper.keySet().size(); for (Iterator entries = mapTableColumnColumnKeeper.entrySet() .iterator(); entries.hasNext();) { // TableColumn column = tcModel.getColumn(i); Map.Entry nextEntry = (Entry) entries.next(); TableColumn column = (TableColumn) nextEntry.getKey(); JCheckBoxMenuItem jcbmi = new JCheckBoxMenuItem(column .getHeaderValue().toString()); ColumnKeeper ck = (ColumnKeeper) nextEntry.getValue(); assert ck != null; jcbmi.setSelected(ck.isShown); jcbmi.addActionListener(ck); mapColNameMenuItem.put(column.getHeaderValue().toString(), jcbmi); popupMenu.add(jcbmi); } popupMenu.addSeparator(); JMenuItem jmiAddColumn = new JMenuItem(language .getText("addCustomColumn")); jmiAddColumn.setIcon(new ImageIcon(getClass().getResource( "/icons/addCol_16.gif"))); jmiAddColumn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Mediator.getGanttProjectSingleton().getUndoManager() .undoableEdit("PopUpNewColumn", new Runnable() { public void run() { Mediator.getCustomColumnsManager() .addNewCustomColumn(null); } }); } }); JMenuItem jmiDisplayAll = new JMenuItem(language.getText("displayAll")); jmiDisplayAll.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Mediator.getGanttProjectSingleton().getUndoManager()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -