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

📄 ganttprojectbase.java

📁 It is all about project scheduling. GanttProject is a tool for creating a project schedule by means
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * Created on 05.04.2005 */package net.sourceforge.ganttproject;import java.awt.BorderLayout;import java.awt.Component;import java.awt.Container;import java.awt.Frame;import java.awt.event.ActionEvent;import java.awt.event.KeyEvent;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.beans.PropertyChangeEvent;import java.beans.PropertyChangeListener;import java.io.File;import java.io.PrintWriter;import java.io.StringWriter;import java.util.ArrayList;import java.util.List;import javax.swing.Action;import javax.swing.BorderFactory;import javax.swing.Box;import javax.swing.Icon;import javax.swing.JButton;import javax.swing.JComponent;import javax.swing.JDialog;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JPopupMenu;import javax.swing.JScrollPane;import javax.swing.KeyStroke;import javax.swing.WindowConstants;import javax.swing.event.ChangeEvent;import javax.swing.event.ChangeListener;import javax.swing.table.AbstractTableModel;import net.sourceforge.ganttproject.action.CancelAction;import net.sourceforge.ganttproject.action.GPAction;import net.sourceforge.ganttproject.action.OkAction;import net.sourceforge.ganttproject.calendar.GPCalendar;import net.sourceforge.ganttproject.chart.Chart;import net.sourceforge.ganttproject.chart.ChartModelImpl;import net.sourceforge.ganttproject.chart.ChartSelection;import net.sourceforge.ganttproject.chart.ChartSelectionListener;import net.sourceforge.ganttproject.chart.overview.OverviewPaneAction;import net.sourceforge.ganttproject.document.Document;import net.sourceforge.ganttproject.document.DocumentCreator;import net.sourceforge.ganttproject.document.DocumentManager;import net.sourceforge.ganttproject.gui.DialogAligner;import net.sourceforge.ganttproject.gui.GanttDialogInfo;import net.sourceforge.ganttproject.gui.GanttStatusBar;import net.sourceforge.ganttproject.gui.GanttTabbedPane;import net.sourceforge.ganttproject.gui.ProjectUIFacade;import net.sourceforge.ganttproject.gui.ProjectUIFacadeImpl;import net.sourceforge.ganttproject.gui.UIConfiguration;import net.sourceforge.ganttproject.gui.UIFacade;import net.sourceforge.ganttproject.gui.options.model.GPOptionChangeListener;import net.sourceforge.ganttproject.gui.scrolling.ScrollingManager;import net.sourceforge.ganttproject.gui.scrolling.ScrollingManagerImpl;import net.sourceforge.ganttproject.gui.zoom.ZoomManager;import net.sourceforge.ganttproject.language.GanttLanguage;import net.sourceforge.ganttproject.parser.ParserFactory;import net.sourceforge.ganttproject.resource.ResourceManager;import net.sourceforge.ganttproject.roles.RoleManager;import net.sourceforge.ganttproject.task.Task;import net.sourceforge.ganttproject.task.TaskContainmentHierarchyFacade;import net.sourceforge.ganttproject.task.TaskManager;import net.sourceforge.ganttproject.time.TimeUnitStack;import net.sourceforge.ganttproject.time.gregorian.GPTimeUnitStack;import net.sourceforge.ganttproject.undo.GPUndoManager;import net.sourceforge.ganttproject.undo.UndoManagerImpl;import org.eclipse.core.runtime.IAdaptable;import org.jdesktop.swing.calendar.JXDatePickerFormatterFactory;/** * This class is designed to be a GanttProject-after-refactorings. I am going to * refactor GanttProject in order to make true view communicating with other * views through interfaces. This class is intentionally package local to * prevent using it in other packages (use interfaces rather than concrete * implementations!) *  * @author dbarashev */abstract class GanttProjectBase extends JFrame implements IGanttProject, UIFacade {    private final ViewManagerImpl myViewManager;    private final List myModifiedStateChangeListeners = new ArrayList();    private final UIFacadeImpl myUIFacade;    private final GanttStatusBar statusBar;    private final TimeUnitStack myTimeUnitStack;    private final ProjectUIFacadeImpl myProjectUIFacade;    private final DocumentManager myDocumentManager;    /** The tabbed pane with the differents parts of the project */    private GanttTabbedPane myTabPane;    private final GPUndoManager myUndoManager;        protected GanttProjectBase() {        super("Gantt Chart");        statusBar = new GanttStatusBar(this);        myTabPane = new GanttTabbedPane();         myViewManager = new ViewManagerImpl(myTabPane);        addProjectEventListener(myViewManager);        myTimeUnitStack = new GPTimeUnitStack(getLanguage());        JXDatePickerFormatterFactory.setDateFormats(myTimeUnitStack.getDateFormats());        myUIFacade =new UIFacadeImpl(this, statusBar, getProject(), (UIFacade)this);        myDocumentManager = new DocumentCreator(this, getUIFacade(),  null) {            protected ParserFactory getParserFactory() {                return GanttProjectBase.this.getParserFactory();            }        };                myUndoManager = new UndoManagerImpl((IGanttProject) this,                null, myDocumentManager) {            protected ParserFactory getParserFactory() {                return GanttProjectBase.this.getParserFactory();            }                    };        Mediator.registerUndoManager(myUndoManager);        myProjectUIFacade = new ProjectUIFacadeImpl(myUIFacade, myDocumentManager, myUndoManager);                OverviewPaneAction overviewAction = new OverviewPaneAction(myUIFacade);        myTabPane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(GPAction.getKeyStroke("overview.shortcut"), "overview");        myTabPane.getActionMap().put("overview", overviewAction);    }    private GanttLanguage getLanguage() {        return GanttLanguage.getInstance();    }    public void addProjectEventListener(ProjectEventListener listener) {        myModifiedStateChangeListeners.add(listener);    }    public void removeProjectEventListener(ProjectEventListener listener) {        myModifiedStateChangeListeners.remove(listener);    }        protected void fireProjectModified(boolean isModified){        for (int i=0; i<myModifiedStateChangeListeners.size(); i++) {            ProjectEventListener next = (ProjectEventListener) myModifiedStateChangeListeners.get(i);            try {                if (isModified) {                    next.projectModified();                }                else {                    next.projectSaved();                }            }            catch(Exception e) {                showErrorDialog(e);            }        }    }        protected void fireProjectClosed() {        for (int i=0; i<myModifiedStateChangeListeners.size(); i++) {            ProjectEventListener next = (ProjectEventListener) myModifiedStateChangeListeners.get(i);            next.projectClosed();        }            }    // ////////////////////////////////////////////////////////////////    // UIFacade    public ProjectUIFacade getProjectUIFacade() {        return myProjectUIFacade;    }        public UIFacade getUIFacade() {        return myUIFacade;    }    public Frame getMainFrame() {        return myUIFacade.getMainFrame();    }    public ScrollingManager getScrollingManager() {        return myUIFacade.getScrollingManager();    }        public ZoomManager getZoomManager() {        return myUIFacade.getZoomManager();    }        public GPUndoManager getUndoManager() {        return myUndoManager;    }    public void setStatusText(String text) {        myUIFacade.setStatusText(text);    }        public void showDialog(Component content, Action[] actions) {        myUIFacade.showDialog(content,actions);    }    public void showDialog(Component content, Action[] actions, String title) {        myUIFacade.showDialog(content,actions,title);    }        public void showUndecoratedDialog(Component content, Action[] actions) {    	myUIFacade.showUndecoratedDialog(content, actions);    }    public UIFacade.Choice showConfirmationDialog(String message, String title) {        return myUIFacade.showConfirmationDialog(message, title);    }    public void showErrorDialog(String message) {        myUIFacade.showErrorDialog(message);    }    public void showErrorDialog(Throwable e) {        myUIFacade.showErrorDialog(e);    }    public void logErrorMessage(Exception e) {    	myUIFacade.logErrorMessage(e);    }    public void showPopupMenu(Component invoker, Action[] actions, int x, int y) {        myUIFacade.showPopupMenu(invoker, actions, x, y);    }//    public void changeWorkingDirectory(File directory) {//        myUIFacade.changeWorkingDirectory(directory);//    }    public void setWorkbenchTitle(String title) {        myUIFacade.setWorkbenchTitle(title);    }    protected GPViewManager getViewManager() {        return myViewManager;    }    private class ViewManagerImpl implements GPViewManager, ProjectEventListener {        private GanttTabbedPane myTabs;        private List myViews = new ArrayList();		private GPViewImpl mySelectedView;        ViewManagerImpl(GanttTabbedPane tabs) {            myTabs = tabs;            myTabs.addChangeListener(new ChangeListener() {				public void stateChanged(ChangeEvent e) {					GPViewImpl selectedView = (GPViewImpl) myTabs.getSelectedUserObject();					if (mySelectedView==selectedView) {						return;					}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -