📄 ganttproject.java
字号:
/*************************************************************************** GanttProject.java - description ------------------- begin : dec 2002 copyright : (C) 2002 by Thomas Alexandre email : alexthomas(at)ganttproject.org ***************************************************************************//*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/package net.sourceforge.ganttproject;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Component;import java.awt.Container;import java.awt.Dimension;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.ComponentEvent;import java.awt.event.ComponentListener;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.awt.event.WindowEvent;import java.awt.event.WindowListener;import java.io.File;import java.io.IOException;import java.net.URL;import java.security.AccessControlException;import java.util.ArrayList;import java.util.Date;import java.util.Hashtable;import java.util.Iterator;import java.util.List;import javax.swing.AbstractAction;import javax.swing.AbstractButton;import javax.swing.Action;import javax.swing.DefaultListModel;import javax.swing.ImageIcon;import javax.swing.JCheckBoxMenuItem;import javax.swing.JFrame;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JPopupMenu;import javax.swing.JTable;import javax.swing.JToolBar;import javax.swing.KeyStroke;import javax.swing.SwingUtilities;import javax.swing.ToolTipManager;import javax.swing.UIManager;import javax.swing.event.ChangeEvent;import javax.swing.event.ChangeListener;import javax.swing.tree.DefaultMutableTreeNode;import javax.swing.tree.MutableTreeNode;import javax.swing.tree.TreePath;import net.sourceforge.ganttproject.GanttProjectBase.RowHeightAligner;import net.sourceforge.ganttproject.action.CalculateCriticalPathAction;import net.sourceforge.ganttproject.action.DeleteAssignmentAction;import net.sourceforge.ganttproject.action.GPAction;import net.sourceforge.ganttproject.action.ImportResources;import net.sourceforge.ganttproject.action.NewArtefactAction;import net.sourceforge.ganttproject.action.NewHumanAction;import net.sourceforge.ganttproject.action.NewTaskAction;import net.sourceforge.ganttproject.action.RedoAction;import net.sourceforge.ganttproject.action.RefreshViewAction;import net.sourceforge.ganttproject.action.ResourceActionSet;import net.sourceforge.ganttproject.action.RolloverAction;import net.sourceforge.ganttproject.action.ScrollGanttChartLeftAction;import net.sourceforge.ganttproject.action.ScrollGanttChartRightAction;import net.sourceforge.ganttproject.action.SwitchViewAction;import net.sourceforge.ganttproject.action.UndoAction;import net.sourceforge.ganttproject.action.ZoomInAction;import net.sourceforge.ganttproject.action.ZoomOutAction;import net.sourceforge.ganttproject.action.project.ProjectMenu;import net.sourceforge.ganttproject.action.task.TaskPropertiesAction;import net.sourceforge.ganttproject.calendar.GPCalendar;import net.sourceforge.ganttproject.calendar.WeekendCalendarImpl;import net.sourceforge.ganttproject.chart.Chart;import net.sourceforge.ganttproject.chart.GanttChart;import net.sourceforge.ganttproject.chart.ToggleChartAction;import net.sourceforge.ganttproject.delay.DelayManager;import net.sourceforge.ganttproject.document.Document;import net.sourceforge.ganttproject.document.DocumentManager;import net.sourceforge.ganttproject.document.DocumentsMRU;import net.sourceforge.ganttproject.document.HttpDocument;import net.sourceforge.ganttproject.document.OpenDocumentAction;import net.sourceforge.ganttproject.export.CommandLineExportApplication;import net.sourceforge.ganttproject.export.ExportFileAction;import net.sourceforge.ganttproject.gui.GanttDialogCalendar;import net.sourceforge.ganttproject.gui.GanttDialogInfo;import net.sourceforge.ganttproject.gui.GanttDialogPerson;import net.sourceforge.ganttproject.gui.GanttLookAndFeelInfo;import net.sourceforge.ganttproject.gui.GanttLookAndFeels;import net.sourceforge.ganttproject.gui.TestGanttRolloverButton;import net.sourceforge.ganttproject.gui.TipsDialog;import net.sourceforge.ganttproject.gui.UIConfiguration;import net.sourceforge.ganttproject.gui.UIFacade;import net.sourceforge.ganttproject.gui.UIFacade.Choice;import net.sourceforge.ganttproject.gui.about.AboutDialog;import net.sourceforge.ganttproject.gui.options.SettingsDialog;import net.sourceforge.ganttproject.gui.options.model.GPOptionGroup;import net.sourceforge.ganttproject.gui.previousState.GanttDialogCompareToPreviousState;import net.sourceforge.ganttproject.gui.previousState.GanttDialogSaveAsPreviousState;import net.sourceforge.ganttproject.gui.scrolling.ScrollingManager;import net.sourceforge.ganttproject.importer.ImportFileAction;import net.sourceforge.ganttproject.importer.ImportFileWizardImpl;import net.sourceforge.ganttproject.io.GPSaver;import net.sourceforge.ganttproject.io.GanttXMLOpen;import net.sourceforge.ganttproject.io.GanttXMLSaver;import net.sourceforge.ganttproject.language.GanttLanguage;import net.sourceforge.ganttproject.parser.GPParser;import net.sourceforge.ganttproject.parser.ParserFactory;import net.sourceforge.ganttproject.parser.PreviousStateTasksTagHandler;import net.sourceforge.ganttproject.parser.ResourceCustomPropertiesTagHandler;import net.sourceforge.ganttproject.parser.ResourcePropertiesTagHandler;import net.sourceforge.ganttproject.parser.ResourceTagHandler;import net.sourceforge.ganttproject.parser.RoleTagHandler;import net.sourceforge.ganttproject.parser.TaskDisplayColumnsTagHandler;import net.sourceforge.ganttproject.parser.TaskPropertiesTagHandler;import net.sourceforge.ganttproject.parser.TaskTagHandler;import net.sourceforge.ganttproject.parser.VacationTagHandler;import net.sourceforge.ganttproject.parser.ViewTagHandler;import net.sourceforge.ganttproject.print.PrintManager;import net.sourceforge.ganttproject.print.PrintPreview;import net.sourceforge.ganttproject.resource.AssignmentContext;import net.sourceforge.ganttproject.resource.HumanResource;import net.sourceforge.ganttproject.resource.HumanResourceManager;import net.sourceforge.ganttproject.resource.ProjectResource;import net.sourceforge.ganttproject.resource.ResourceContext;import net.sourceforge.ganttproject.resource.ResourceEvent;import net.sourceforge.ganttproject.resource.ResourceManager;import net.sourceforge.ganttproject.resource.ResourceView;import net.sourceforge.ganttproject.roles.RoleManager;import net.sourceforge.ganttproject.task.BlankLineNode;import net.sourceforge.ganttproject.task.CustomColumnsStorage;import net.sourceforge.ganttproject.task.Task;import net.sourceforge.ganttproject.task.TaskContainmentHierarchyFacade;import net.sourceforge.ganttproject.task.TaskManager;import net.sourceforge.ganttproject.task.TaskManagerConfig;import net.sourceforge.ganttproject.task.TaskManagerImpl;import net.sourceforge.ganttproject.task.TaskNode;import net.sourceforge.ganttproject.task.TaskSelectionManager;import net.sourceforge.ganttproject.task.algorithm.AdjustTaskBoundsAlgorithm;import net.sourceforge.ganttproject.task.algorithm.RecalculateTaskCompletionPercentageAlgorithm;import net.sourceforge.ganttproject.time.TimeUnitStack;import net.sourceforge.ganttproject.util.BrowserControl;/** * Main frame of the project */public class GanttProject extends GanttProjectBase implements ActionListener, IGanttProject, ResourceView, KeyListener, UIFacade { /** The current version of ganttproject */ public static final String version = GPVersion.V2_1; /** Command line creation or gui creation */ public static boolean byCommandLine = false; /** The language use */ private GanttLanguage language = GanttLanguage.getInstance(); /** The JTree part. */ private GanttTree2 tree; /** GanttGraphicArea for the calendar with Gantt */ private GanttGraphicArea area; /** GanttPeoplePanel to edit person that work on the project */ private GanttResourcePanel resp; /** The differents menus */ public JMenu mProject, mMRU, mEdit, mTask, mHuman, mHelp, mServer, mCalendar; // public JMenu mView; /** The differetns menuitem */ public JMenuItem miPreview,/* miCut, miCopy, miPaste,*/ miOptions, miDeleteTask, /*miUp, miDown,*/ miDelHuman, miSendMailHuman, miEditCalendar, miPrjCal, miWebPage, miTips, miAbout, miManual, miRefresh, miChartOptions; public JMenuItem miUndo, miRedo; private static final int maxSizeMRU = 5; private DocumentsMRU documentsMRU = new DocumentsMRU(maxSizeMRU); /** The differents button of toolbar */ private TestGanttRolloverButton bNew, bOpen, bSave, bExport, bImport, bPrint, bPreviewPrint, bCopy, bCut, bPaste, bNewTask, bDelete, bProperties,/* bUnlink, bLink, bUp, bDown,*/ bPrev, bScrollCenter, bNext, bZoomFit, bAbout; private TestGanttRolloverButton bShowHiddens; private JPopupMenu menu = new JPopupMenu();; private TestGanttRolloverButton bZoomIn, bZoomOut; private TestGanttRolloverButton bUndo, bRedo; private TestGanttRolloverButton bCritical; private TestGanttRolloverButton bSaveCurrent, bComparePrev; private TestGanttRolloverButton bRefresh; /** The project filename */ public Document projectDocument = null; /** Informations for the current project. */ public PrjInfos prjInfos = new PrjInfos(); /** Boolean to know if the file has been modify */ public boolean askForSave = false; /** The info for the look'n'feel */ public GanttLookAndFeelInfo lookAndFeel; /** Is the application only for viewer. */ public boolean isOnlyViewer; /** The list of all managers installed in this project */ private Hashtable managerHash = new Hashtable(); private ResourceActionSet myResourceActions; /** Frame for the help Viewer */ private JFrame helpFrame = null; private final TaskManager myTaskManager; private FacadeInvalidator myFacadeInvalidator; private UIConfiguration myUIConfiguration; private final GanttOptions options; private JMenuBar bar; // ! Toolbar of ui private GPToolBar toolBar; private DefaultListModel iconList = new DefaultListModel(); private DefaultListModel deletedIconList = new DefaultListModel(); // list.setName("list"); private TaskPropertiesAction myTaskPropertiesAction; private NewTaskAction myNewTaskAction; private NewHumanAction myNewHumanAction; private NewArtefactAction myNewArtefactAction;// private CopyAction myCopyAction;//// private PasteAction myPasteAction;//// private CutAction myCutAction;// private RefreshViewAction myRefreshAction; private Action myDeleteHumanAction; private TaskContainmentHierarchyFacadeImpl myCachedFacade; private List myRolloverActions = new ArrayList(); private ArrayList myPreviousStates = new ArrayList(); private MouseListener myStopEditingMouseListener = null; private DelayManager myDelayManager; // private boolean bQuickSave;//to know if gantt has to quicksave the // project // private int currentQuickSave; // private ArrayList aQuick;//List of all the quicksaves // private int lastQuickSave; // private int firstQuickSave; // private int undoNumber; //private JSplitPane mySplitPane; private ProjectMenu myProjectMenu;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -