📄 resourcetreetable.java
字号:
popupMenu.addSeparator(); /* 'add new column' button */ JMenuItem addColumnItem = new JMenuItem(language .getText("addCustomColumn")); addColumnItem.setIcon(new ImageIcon(getClass().getResource( "/icons/addCol_16.gif"))); addColumnItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { /* TODO the undo management */ Mediator.getGanttProjectSingleton().getUndoManager() .undoableEdit("addCustomColumn", new Runnable() { public void run() { ResourceColumn column = null; addCustomColumn(column); } }); } }); popupMenu.add(addColumnItem); /* 'delete column' button */ delColumnItem = new JMenuItem(language.getText("deleteCustomColumn")); delColumnItem.setIcon(new ImageIcon(getClass().getResource( "/icons/removeCol_16.gif"))); delColumnItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { /* TODO undo managment */ Mediator.getGanttProjectSingleton().getUndoManager() .undoableEdit("deleteCustomColumn", new Runnable() { public void run() { int ind = getTable().columnAtPoint(clickPoint); if (ind >= 0) { deleteCustomColumn(getTable() .getColumnName(ind)); delColumnItem.setEnabled(false); } } }); } }); popupMenu.add(delColumnItem); } /* Shows the given column. The column will appear on * it's default position */ void showColumn(ResourceColumn col) { col.setVisible(true); this.addColumn(col.getColumn()); colCount++; try { this.getTable().moveColumn(colCount - 1, col.getIndex()); } catch (IllegalArgumentException e) {/* doesn't matter, new put the column where we can */} } void hideColumn(ResourceColumn col) { col.setVisible(false); this.removeColumn(col.getColumn()); colCount--; } public void addMandatoryColumn(ResourceColumn column) { this.addColumn(column.getColumn()); colCount++; ttModel.addMandatoryColumn(column); } /* creates a custom property column in the datamodel and on the screen */ public void addCustomColumn(ResourceColumn column) { if (column == null) { /* create dialog and create column */ int index = ttModel.useNextIndex(); TableColumnExt col = new TableColumnExt(index); column = new ResourceColumn(col, index); ResourceDialogCustomColumn d = new ResourceDialogCustomColumn( Mediator.getGanttProjectSingleton().getUIFacade(), column); d.setVisible(true); column = d.getColumn(); } if (column.getTitle() != null) { /* adding the column into the datamodel */ try { ttModel.addCustomColumn(column.getTitle(), column); } catch (Exception e) { JOptionPane.showMessageDialog(this, e.getMessage(), /* TODO add translation */ "Column add", JOptionPane.ERROR_MESSAGE); return; } /* adding the column to the screen */ this.addColumn(column.getColumn()); colCount++; /* setting the cell renderer */ String colClass = column.getType().getName(); int align; if (colClass.equals("java.lang.Integer") || colClass.equals("java.lang.Double")) { align = SwingConstants.RIGHT; setColumnHorizontalAlignment(column.getTitle(), align); } else if (colClass.equals("java.util.GregorianCalendar")) { align = SwingConstants.CENTER; setColumnHorizontalAlignment(column.getTitle(), align); /* the customised date cell editor */ column.getColumn().setCellEditor(newDateCellEditor()); } else { align = SwingConstants.LEFT; setColumnHorizontalAlignment(column.getTitle(), align); } } } /* deletes the column from the screen and the data model */ public void deleteCustomColumn(String name) { ResourceColumn col = null; col = ttModel.deleteCustomColumn(name); this.removeColumn(col.getColumn()); colCount--; } void setUpRolesRenderer() { Role roles[] = getRoleManager().getEnabledRoles(); final JComboBox comboBox = new JComboBox(); for (int i = 0; i < roles.length; i++) comboBox.addItem(roles[i]); try { TableColumn roleColumn = this .getColumn(ResourceTreeTableModel.strResourceRole); comboBox.setEditable(false); roleColumn.setCellEditor(new DefaultCellEditor(comboBox)); } catch (IllegalArgumentException ex) { } } private RoleManager getRoleManager() { if (myRoleManager == null) { myRoleManager = Mediator.getRoleManager(); myRoleManager.addRoleListener(new RoleManager.Listener() { public void rolesChanged(RoleEvent e) { setUpRolesRenderer(); setUpAssignementRolesRenderer(); } }); } return myRoleManager; } void setUpAssignementRolesRenderer() { // Role roles[] = Mediator.getRoleManager().getEnabledRoles(); // final JComboBox comboBox = new JComboBox(); // for (int i = 0; i < roles.length; i++) // comboBox.addItem(roles[i]); final JComboBox comboBox = new JComboBox(getRoleManager() .getEnabledRoles()); try { TableColumn roleColumn = this .getColumn(ResourceTreeTableModel.strResourceRoleForTask); comboBox.setEditable(false); roleColumn.setCellEditor(new DefaultCellEditor(comboBox)); } catch (IllegalArgumentException ex) { } } private void initColumnsAlignements() { // setColumnHorizontalAlignment(ResourceTreeTableModel.strResourceName, // SwingConstants.LEFT); setColumnHorizontalAlignment(ResourceTreeTableModel.strResourceRole, SwingConstants.LEFT); setColumnHorizontalAlignment(ResourceTreeTableModel.strResourceEMail, SwingConstants.LEFT); setColumnHorizontalAlignment(ResourceTreeTableModel.strResourcePhone, SwingConstants.RIGHT); setColumnHorizontalAlignment( ResourceTreeTableModel.strResourceRoleForTask, SwingConstants.LEFT); // Set the columns widths getTable().getColumnExt(ResourceTreeTableModel.strResourceName) .setPreferredWidth(150); getTable().getColumnExt(ResourceTreeTableModel.strResourceRole) .setPreferredWidth(120); getTable().getColumnExt(ResourceTreeTableModel.strResourceEMail) .setPreferredWidth(100); getTable().getColumnExt(ResourceTreeTableModel.strResourcePhone) .setPreferredWidth(100); getTable().getColumnExt(ResourceTreeTableModel.strResourceRoleForTask) .setPreferredWidth(100); // getTable().getColumnExt(ResourceTreeTableModel.strResourceName) // .setMaxWidth(300); // getTable().getColumnExt(ResourceTreeTableModel.strResourceRole) // .setMaxWidth(300); // getTable().getColumnExt(ResourceTreeTableModel.strResourceEMail) // .setMaxWidth(300); // getTable().getColumnExt(ResourceTreeTableModel.strResourcePhone) // .setMaxWidth(300); // getTable().getColumnExt(ResourceTreeTableModel.strResourceRoleForTask) // .setMaxWidth(300); } /** @return the list of the selected nodes. */ public DefaultMutableTreeNode[] getSelectedNodes() { TreePath[] currentSelection = getTreeTable().getTree() .getSelectionPaths(); if (currentSelection == null || currentSelection.length == 0) { return new DefaultMutableTreeNode[0]; } DefaultMutableTreeNode[] dmtnselected = new DefaultMutableTreeNode[currentSelection.length]; for (int i = 0; i < currentSelection.length; i++) { dmtnselected[i] = (DefaultMutableTreeNode) currentSelection[i] .getLastPathComponent(); } return dmtnselected; } public boolean isExpanded(ProjectResource pr) { ResourceNode node = ((ResourceTreeTableModel) getTreeTableModel()) .exists(pr); if (node != null) return getTreeTable().isExpanded(new TreePath(node.getPath())); return false; } public void addKeyListener(KeyListener listener) { // getTreeTable().addKeyListener(listener); super.addKeyListener(listener); getTable().addKeyListener(listener); getTree().addKeyListener(listener); } public JTree getTree() { return this.getTreeTable().getTree(); } public void setAction(Action action) { InputMap inputMap = new InputMap(); inputMap.put((KeyStroke) action.getValue(Action.ACCELERATOR_KEY), action.getValue(Action.NAME)); inputMap.setParent(getTreeTable().getInputMap(JComponent.WHEN_FOCUSED)); getTreeTable().setInputMap(JComponent.WHEN_FOCUSED, inputMap); // Add the action to the component getTreeTable().getActionMap().put(action.getValue(Action.NAME), action); } public void addMouseListener(MouseListener listener) { getTreeTable().addMouseListener(listener); } public JScrollBar getVerticalScrollBar() { return scrollPane.getVerticalScrollBar(); } /* This actionlistener changes the column's visibility */ class ColumnHandler implements ActionListener { private ResourceColumn column; public ColumnHandler(ResourceColumn c) { column = c; } public void actionPerformed(ActionEvent e) { if (column.isVisible()) hideColumn(column); else showColumn(column); } } void upResource() { final DefaultMutableTreeNode[] selectedNodes = getSelectedNodes(); if(selectedNodes.length==0) { return; } DefaultMutableTreeNode selectedNode = selectedNodes[0]; if (selectedNode instanceof ResourceNode) { ResourceNode rn = (ResourceNode) selectedNode; int index = rn.getParent().getIndex(rn); if (index > 0) { HumanResource people = (HumanResource)selectedNodes[0].getUserObject(); ttModel.moveUp(people); getTree().setSelectionPath(new TreePath(rn.getPath())); } } } /** Move down the selected resource */ void downResource() { final DefaultMutableTreeNode[] selectedNodes = getSelectedNodes(); if(selectedNodes.length==0) { return; } DefaultMutableTreeNode selectedNode = selectedNodes[0]; if (selectedNode instanceof ResourceNode) { ResourceNode rn = (ResourceNode) selectedNode; int index = rn.getParent().getIndex(rn); if (index < rn.getParent().getChildCount() - 1) { HumanResource people = (HumanResource)selectedNodes[0].getUserObject(); ttModel.moveDown(people); getTree().setSelectionPath(new TreePath(rn.getPath())); } } } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -