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

📄 ganttdialogperson.java

📁 It is all about project scheduling. GanttProject is a tool for creating a project schedule by means
💻 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 + -