📄 asignationeditor.java
字号:
/** * Copyright 2004 Carlos Silva A. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */package jgantt.view.dialogs;import java.awt.BorderLayout;import java.awt.Window;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.Iterator;import java.util.Vector;import javax.swing.JButton;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.event.TableModelEvent;import javax.swing.event.TableModelListener;import javax.swing.table.TableModel;import jgantt.Messages;import jgantt.model.Resource;import jgantt.model.Task;import jgantt.view.adapters.ProjectViewModel;import jgantt.view.adapters.ProjectViewModelChange;import jgantt.view.adapters.ProjectViewModelListener;/** * Resources * * <p>$Date: 2004/04/24 06:44:25 $</p> * @version $Revision: 1.10 $ * @author Carlos Silva */public class AsignationEditor extends JPanel implements ActionListener, ProjectViewModelListener { /** * */ private static final long serialVersionUID = 3257002172494263609L; JTable jtable; ResourceModel resModel; String CMD_CLOSE = "Close"; String CMD_DELETE = "Delete resource"; String CMD_ADD = "Add resource"; Window mainWindow = null; Task task; ProjectViewModel pvModel; AsignationEditor asignationEditor = this; /** * Constructor for TaskEditor */ public AsignationEditor(Window parent, ProjectViewModel model, Task t) { super(); mainWindow = parent; pvModel = model; this.task = t; model.addListener(this); Object o = this; if (parent != null) new RemoveObservers(parent, pvModel, this, null); resModel = new ResourceModel(model, task); jtable = new JTable(resModel); JScrollPane js = new JScrollPane(jtable); jtable.getColumnModel().getColumn(0).setMinWidth(20); jtable.getColumnModel().getColumn(1).setMinWidth(50); jtable.getColumnModel().getColumn(2).setMinWidth(70); jtable.getColumnModel().getColumn(3).setMinWidth(50); jtable.getColumnModel().getColumn(0).setMaxWidth(30); jtable.getColumnModel().getColumn(1).setMaxWidth(70); jtable.getColumnModel().getColumn(3).setMaxWidth(70); JPanel buttons = new JPanel(); JButton jb = new JButton(CMD_ADD); jb.addActionListener(this); buttons.add(jb); jb = new JButton(CMD_DELETE); jb.addActionListener(this); buttons.add(jb); if (mainWindow != null) { jb = new JButton(CMD_CLOSE); jb.addActionListener(this); buttons.add(jb); } setLayout(new BorderLayout()); add(js, BorderLayout.CENTER); add(buttons, BorderLayout.NORTH); } /** * Eventos de botones */ public void actionPerformed(ActionEvent ev) { String cmd = ev.getActionCommand(); if (cmd.equals(CMD_ADD)) { new Resource(resModel.pvm.getProject()); resModel.fireTableChanged(); } else if (cmd.equals(CMD_DELETE)) { int row = jtable.getSelectedRow(); Resource res = (Resource) resModel.pvm.getProject().getResources().get(row); res.remove(); resModel.fireTableChanged(); } else if (cmd.equals(CMD_CLOSE)) { pvModel.removeListener(this); mainWindow.dispose(); } } static class ResourceModel implements TableModel { String cn[] = { Messages.getString("ResourcesTable.col.id"), Messages.getString("ResourcesTable.col.initials"), Messages.getString("ResourcesTable.col.name"), Messages.getString("ResourcesTable.col.units")}; ProjectViewModel pvm; Task task; public ResourceModel(ProjectViewModel model, Task t) { pvm = model; Vector v = model.getProject().getResources(); task = t; } Vector listeners = new Vector(); public void addTableModelListener(TableModelListener listener) { listeners.add(listener); } public void fireTableChanged() { for (Iterator i = listeners.iterator(); i.hasNext();) { TableModelListener listener = (TableModelListener) i.next(); TableModelEvent ev = new TableModelEvent(this); listener.tableChanged(ev); } } public Class getColumnClass(int i) { return String.class; } public int getColumnCount() { return cn.length; } public String getColumnName(int c) { return cn[c]; } public int getRowCount() { return pvm.getProject().getResources().size(); } public Object getValueAt(int i, int j) { Resource r = (Resource) pvm.getProject().getResources().get(i); switch (j) { case 0 : return String.valueOf(r.getId()); case 1 : return r.getInitials(); case 2 : return r.getName(); case 3 : return String.valueOf(task.getAsignationUnits(r)); } return null; } public boolean isCellEditable(int i, int j) { return j > 0; } public void removeTableModelListener(TableModelListener listener) { listeners.remove(listener); } public void setValueAt(Object val, int i, int j) { String value = (String) val; Resource r = (Resource) pvm.getProject().getResources().get(i); switch (j) { case 1 : r.setInitials(value); break; case 2 : r.setName(value); break; case 3 : task.addResource(r, Integer.parseInt(value)); break; } } public void setTask(Task task) { this.task = task; fireTableChanged(); } } /** * Eventos del modelo * @see jgantt.view.adapters.ProjectViewModelListener#projectChanged(jgantt.view.adapters.ProjectViewModelChange) */ public void viewModelChanged(ProjectViewModelChange c) { resModel.setTask(c.getProjectViewModel().getCurrentTask()); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -