📄 ganttdialogperson.java
字号:
/* * GanttDialogPerson.java * * Created on 5. September 2003, 14:05 */package net.sourceforge.ganttproject.gui;import java.awt.Component;import java.awt.Container;import java.awt.FocusTraversalPolicy;import java.awt.event.ActionEvent;import java.awt.event.ComponentAdapter;import java.awt.event.ComponentEvent;import java.awt.event.FocusAdapter;import java.awt.event.FocusEvent;import javax.swing.Action;import javax.swing.BorderFactory;import javax.swing.DefaultListModel;import javax.swing.ImageIcon;import javax.swing.JComponent;import javax.swing.JPanel;import javax.swing.JTabbedPane;import net.sourceforge.ganttproject.action.CancelAction;import net.sourceforge.ganttproject.action.OkAction;import net.sourceforge.ganttproject.calendar.GanttDaysOff;import net.sourceforge.ganttproject.gui.DateIntervalListEditor.DateInterval;import net.sourceforge.ganttproject.gui.DateIntervalListEditor.DefaultDateIntervalModel;import net.sourceforge.ganttproject.gui.options.OptionsPageBuilder;import net.sourceforge.ganttproject.gui.options.model.DefaultEnumerationOption;import net.sourceforge.ganttproject.gui.options.model.DefaultStringOption;import net.sourceforge.ganttproject.gui.options.model.EnumerationOption;import net.sourceforge.ganttproject.gui.options.model.GPOption;import net.sourceforge.ganttproject.gui.options.model.GPOptionGroup;import net.sourceforge.ganttproject.gui.options.model.StringOption;import net.sourceforge.ganttproject.language.GanttLanguage;import net.sourceforge.ganttproject.resource.HumanResource;import net.sourceforge.ganttproject.roles.Role;import net.sourceforge.ganttproject.roles.RoleManager;public class GanttDialogPerson { private boolean change; private HumanResource person; /** The language use */ private GanttLanguage language = GanttLanguage.getInstance(); private JTabbedPane tabbedPane; private final StringOption myNameField = new DefaultStringOption("name"); private final StringOption myPhoneField = new DefaultStringOption("colPhone"); private final StringOption myMailField = new DefaultStringOption("colMail"); private final EnumerationOption myRoleField; private final GPOptionGroup myGroup; private final UIFacade myUIFacade; /** Creates new form GanttDialogPerson */ public GanttDialogPerson(UIFacade uiFacade, GanttLanguage language, HumanResource person) {// super(parent, GanttProject.correctLabel(language.getText("human")),// true);// myUIFacade = uiFacade; this.person = person; Role[] enabledRoles = RoleManager.Access.getInstance().getEnabledRoles(); String[] roleFieldValues = new String[enabledRoles.length]; for (int i=0; i<enabledRoles.length; i++) { roleFieldValues[i]= enabledRoles[i].getName(); } myRoleField = new DefaultEnumerationOption("colRole", roleFieldValues); myGroup = new GPOptionGroup("", new GPOption[] {myNameField, myPhoneField, myMailField,myRoleField}); myGroup.setTitled(false); } public boolean result() { return change; } public void setVisible(boolean isVisible) { if (isVisible) { loadFields(); Component contentPane = getComponent(); OkAction okAction = new OkAction() { public void actionPerformed(ActionEvent e) { myGroup.commit(); okButtonActionPerformed(e); } }; CancelAction cancelAction = new CancelAction(){ public void actionPerformed(ActionEvent e) { myGroup.rollback(); change = false; } }; myUIFacade.showDialog(contentPane, new Action[] {okAction, cancelAction}, language.getText("human")); } } private void loadFields() { myGroup.lock(); myNameField.setValue(person.getName()); myPhoneField.setValue(person.getPhone()); myMailField.setValue(person.getMail()); Role role = person.getRole(); if (role!=null) { myRoleField.setValue(role.getName()); } myGroup.commit(); myGroup.lock(); } private Component getComponent() { OptionsPageBuilder builder = new OptionsPageBuilder(); OptionsPageBuilder.I18N i18n = new OptionsPageBuilder.I18N() { public String getOptionLabel(GPOption option) { return getValue(option.getID()); } }; builder.setI18N(i18n); final JComponent mainPage = builder.buildPlanePage(new GPOptionGroup[] {myGroup}); mainPage.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); tabbedPane = new JTabbedPane(); tabbedPane.addTab(language.getText("general"), new ImageIcon(getClass() .getResource("/icons/properties_16.gif")), mainPage); tabbedPane.addTab(language.getText("daysOff"), new ImageIcon(getClass() .getResource("/icons/holidays_16.gif")), constructDaysOffPanel()); //mainPage.requestDefaultFocus();// final FocusTraversalPolicy defaultPolicy = mainPage.getFocusTraversalPolicy();// FocusTraversalPolicy customPolicy = new FocusTraversalPolicy() {// public Component getComponentAfter(Container aContainer, Component aComponent) {// return defaultPolicy.getComponentAfter(aContainer, aComponent);// }//// public Component getComponentBefore(Container aContainer, Component aComponent) {// return defaultPolicy.getComponentBefore(aContainer, aComponent);// }//// public Component getFirstComponent(Container aContainer) {// return defaultPolicy.getFirstComponent(aContainer);// }//// public Component getLastComponent(Container aContainer) {// return defaultPolicy.getLastComponent(aContainer);// }//// public Component getDefaultComponent(Container aContainer) {// return mainPage;// }// };// //mainPage.setFocusCycleRoot(true);// mainPage.setFocusTraversalPolicy(customPolicy); tabbedPane.addFocusListener(new FocusAdapter() { boolean isFirstTime = true; public void focusGained(FocusEvent e) { if (isFirstTime) { mainPage.requestFocus(); isFirstTime = false; } super.focusGained(e); } }); return tabbedPane; } private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_okButtonActionPerformed if (person.getId() != -1) {// person ID is -1 when it is new one // i.e. before the Person dialog is // closed myUIFacade.getUndoManager().undoableEdit( "Resource properties changed", new Runnable() { public void run() { applyChanges(); } }); } else { applyChanges(); } change = true; } private void applyChanges() { person.setName(myNameField.getValue()); person.setMail(myMailField.getValue()); person.setPhone(myPhoneField.getValue()); // person.setLineNumber(); Role role = findRole(myRoleField.getValue()); if (role!=null) { person.setRole(role); } DateInterval[] intervals = myDaysOffModel.getIntervals(); person.getDaysOff().clear(); for (int i=0; i<intervals.length; i++) { person.addDaysOff(new GanttDaysOff(intervals[i].start, intervals[i].end)); } } private Role findRole(String roleName) { Role[] enabledRoles = RoleManager.Access.getInstance().getEnabledRoles(); for (int i=0; i<enabledRoles.length; i++) { if (enabledRoles[i].getName().equals(roleName)) { return enabledRoles[i]; } } return null; } private DefaultDateIntervalModel myDaysOffModel; public JPanel constructDaysOffPanel() { myDaysOffModel = new DateIntervalListEditor.DefaultDateIntervalModel() { public int getMaxIntervalLength() { return 2; } public void add(DateInterval interval) { super.add(interval); } public void remove(DateInterval interval) { super.remove(interval); } }; DefaultListModel daysOff = person.getDaysOff(); for (int i=0; i<daysOff.getSize(); i++) { GanttDaysOff next = (GanttDaysOff) daysOff.get(i); myDaysOffModel.add(new DateIntervalListEditor.DateInterval(next.getStart().getTime(), next.getFinish().getTime())); } DateIntervalListEditor editor = new DateIntervalListEditor(myDaysOffModel); return editor; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -