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

📄 ganttgraphicarea.java

📁 It is all about project scheduling. GanttProject is a tool for creating a project schedule by means
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
        int chartHeight = task_image.getHeight();        List myItemsToConsider = myTaskImageGenerator.getPrintableNodes(settings);                return new RenderedGanttChartImage(myChartModel, myChartComponentImpl, GanttTree2.convertNodesListToItemList(myItemsToConsider), task_image, chartWidth, chartHeight);    }        private GanttTree2 getTree() {        return this.tree;    }    GPUndoManager getUndoManager() {        return myUndoManager;    }    protected ChartModelBase getChartModel() {        return myChartModel;    }    protected MouseListener getMouseListener() {        return new MouseListener() {            public void mouseClicked(MouseEvent e) {                getChartImplementation().getMouseListener().mouseClicked(e);            }            public void mouseEntered(MouseEvent e) {                getChartImplementation().getMouseListener().mouseEntered(e);            }            public void mouseExited(MouseEvent e) {                getChartImplementation().getMouseListener().mouseExited(e);            }            public void mousePressed(MouseEvent e) {                getChartImplementation().getMouseListener().mousePressed(e);            }            public void mouseReleased(MouseEvent e) {                getChartImplementation().getMouseListener().mouseReleased(e);            }        };    }    protected MouseMotionListener getMouseMotionListener() {        return new MouseMotionListener() {            public void mouseDragged(MouseEvent e) {                getChartImplementation().getMouseMotionListener().mouseDragged(e);            }            public void mouseMoved(MouseEvent e) {                getChartImplementation().getMouseMotionListener().mouseMoved(e);            }        };    }    private Action[] getPopupMenuActions() {        return new Action[] { getOptionsDialogAction(),                new PublicHolidayDialogAction(getProject(), getUIFacade()) };        // actions.add(createMenuAction(GanttProject.correctLabel(language        // .getText("editPublicHolidays")), "));    }        protected Component createPreviewComponent() {        return myPreviewPanel;    }    public void repaint() {        try {            myChartModel.setHeaderHeight(myTableHeader.getHeight()                    + HEADER_OFFSET);        } catch (NullPointerException e) {            // e.printStackTrace();        }        super.repaint();    }    class MouseSupport {        protected Task findTaskUnderMousePointer(int xpos, int ypos) {            // int taskID = detectPosition(xpos, ypos, false);            // return taskID==-1 ? null : getTaskManager().getTask(taskID);            ChartItem chartItem = myChartModel.getChartItemWithCoordinates(                    xpos, ypos);            return chartItem == null ? null : chartItem.getTask();        }        protected ChartItem getChartItemUnderMousePoint(int xpos, int ypos) {            ChartItem result = myChartModel.getChartItemWithCoordinates(xpos,                    ypos);            return result;        }    }    abstract class ChangeTaskBoundaryInteraction extends MouseInteractionBase {        private TaskInteractionHintRenderer myLastNotes;        private final Task myTask;        private final float myInitialDuration;        private GanttCalendar myInitialEnd;        private GanttCalendar myInitialStart;        protected ChangeTaskBoundaryInteraction(MouseEvent initiatingEvent,                TaskBoundaryChartItem taskBoundary) {            super(initiatingEvent);            myTask = taskBoundary.getTask();            myInitialDuration = myTask.getDuration().getLength(                    getViewState().getBottomTimeUnit());            myInitialEnd = getTask().getEnd();            myInitialStart = getTask().getStart();        }        public void apply(MouseEvent e) {            if (myLastNotes == null) {                myLastNotes = new TaskInteractionHintRenderer("", e.getX(), e                        .getY());            }            float diff = getLengthDiff(e);            apply(diff);            myLastNotes.setString(getNotesText());            myLastNotes.setX(e.getX());        }        protected Task getTask() {            return myTask;        }        protected float getInitialDuration() {            return myInitialDuration;        }        public void finish(final TaskMutator mutator) {            mutator.setIsolationLevel(TaskMutator.READ_COMMITED);            // if            // ((!myInitialEnd.equals(getTask().getEnd()))||(!myInitialStart.equals(getTask().getStart())))            getUndoManager().undoableEdit("Task boundary changed",                    new Runnable() {                        public void run() {                            doFinish(mutator);                        }                    });        }        private void doFinish(TaskMutator mutator) {            mutator.commit();            myLastNotes = null;            try {                getTaskManager().getAlgorithmCollection()                        .getRecalculateTaskScheduleAlgorithm().run();            } catch (TaskDependencyException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }            GanttGraphicArea.this.repaint();        }        public void paint(Graphics g) {            if (myLastNotes != null) {                myLastNotes.paint(g);            }        }        protected abstract void apply(float diff);        protected abstract String getNotesText();    }    class ChangeTaskEndInteraction extends ChangeTaskBoundaryInteraction            implements MouseInteraction {        private TaskMutator myMutator;        private GanttCalendar myInitialEnd;        public ChangeTaskEndInteraction(MouseEvent initiatingEvent,                TaskBoundaryChartItem taskBoundary) {            super(initiatingEvent, taskBoundary);            setCursor(E_RESIZE_CURSOR);            myMutator = getTask().createMutator();            myInitialEnd = getTask().getEnd();        }        protected void apply(float diff) {            TaskLength newLength = getTaskManager().createLength(                    getViewState().getBottomTimeUnit(),                    getInitialDuration() + diff);            TaskLength translated = getTask().translateDuration(newLength);            if (translated.getLength() != 0) {                myMutator.setDuration(translated);            }        }        protected String getNotesText() {            return getTask().getEnd().toString();        }        public void finish() {            super.finish(myMutator);        }    }    class ChangeTaskStartInteraction extends ChangeTaskBoundaryInteraction            implements MouseInteraction {        private TaskLength myInitialLength;        private TaskMutator myMutator;        private GanttCalendar myInitialStart;        ChangeTaskStartInteraction(MouseEvent e,                TaskBoundaryChartItem taskBoundary) {            super(e, taskBoundary);            setCursor(W_RESIZE_CURSOR);            myInitialLength = getTask().getDuration();            myMutator = getTask().createMutator();            myInitialStart = getTask().getStart();        }        protected void apply(float diff) {            TaskLength newLength = getTaskManager().createLength(                    getViewState().getBottomTimeUnit(),                    getInitialDuration() + diff);            TaskLength translated = getTask().translateDuration(newLength);            int dayDiff = (int) (translated.getValue() - myInitialLength                    .getValue());            // System.err.println("[ChangeTaskStart] dayDiff="+dayDiff+"            // newLength="+newLength+" translated="+translated);            if (dayDiff != 0) {                // System.err.println("[ChangeTaskStartInteraction] apply():                // oldStart="+getTask().getStart());                GanttCalendar newStart = myInitialStart.newAdd(dayDiff);                // System.err.println("newStart"+newStart);                myMutator.setStart(newStart);                if ((getTask().getThird() != null)                        && (getTask().getThirdDateConstraint() == TaskImpl.EARLIESTBEGIN))                    myMutator.setEnd(getTask().getEnd().Clone());                getTask().applyThirdDateConstraint();                // mutator.commit();                // myInitialLength = getTask().getDuration();            }        }        public void finish() {            super.finish(myMutator);            getTask().applyThirdDateConstraint();        }        protected String getNotesText() {            return getTask().getStart().toString();        }    }    class ChangeTaskProgressInteraction extends MouseInteractionBase implements            MouseInteraction {        private TaskProgressChartItem myTaskProgrssItem;        private TaskMutator myMutator;        private TaskInteractionHintRenderer myLastNotes;        private int myProgressWas;        private int myProgressIs;        public ChangeTaskProgressInteraction(MouseEvent e,                TaskProgressChartItem taskProgress) {            super(e);            Toolkit toolkit = Toolkit.getDefaultToolkit();            try {                setCursor(CHANGE_PROGRESS_CURSOR);            } catch (Exception exept) {                setCursor(E_RESIZE_CURSOR);            }            myTaskProgrssItem = taskProgress;            myMutator = myTaskProgrssItem.getTask().createMutator();            myProgressWas = myTaskProgrssItem.getTask()                    .getCompletionPercentage();        }        public void apply(MouseEvent event) {            // int deltaProgress =            // (int)myTaskProgrssItem.getProgressDelta(event.getX());            float deltaUnits = getLengthDiff(event);            int deltaPercents = (int) (100 * deltaUnits / myTaskProgrssItem                    .getTask().getDuration().getLength(                            getViewState().getBottomTimeUnit()));            int newProgress = myProgressWas + deltaPercents;            if (newProgress > 100) {                newProgress = 100;            }            if (newProgress < 0) {                newProgress = 0;            }            myProgressIs = newProgress;            myMutator.setCompletionPercentage(newProgress);            myLastNotes = new TaskInteractionHintRenderer(newProgress + "%",                    event.getX(), event.getY() - 30);        }        public void finish() {            myMutator.setIsolationLevel(TaskMutator.READ_COMMITED);            getUndoManager().undoableEdit("Task progress changed",                    new Runnable() {                        public void run() {                            doFinish(myMutator);                        }                    });            GanttGraphicArea.this.repaint();        }        private void doFinish(TaskMutator mutator) {            mutator.commit();            myLastNotes = null;            try {                getTaskManager().getAlgorithmCollection()                        .getRecalculateTaskScheduleAlgorithm().run();            } catch (TaskDependencyException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }            if (myProgressIs == myProgressWas) {                // getUndoManager ().die ();                myMutator.commit();                repaint();                int myProgressIs = myTaskProgrssItem.getTask()                        .getCompletionPercentage();                if (myProgressIs != myProgressWas) {                    // appli.setQuickSave(true);                    // appli.quickSave ("Task progress changed");                }            }        }        public void paint(Graphics g) {            if (myLastNotes != null) {                myLastNotes.paint(g);            }        }    }    class DrawDependencyInteraction extends MouseInteractionBase implements            MouseInteraction {        private final Task myTask;        private Point myStartPoint;        private DependencyInteractionRenderer myArrow;        private GanttGraphicArea.MouseSupport myMouseSupport;        private Task myDependant;        public DrawDependencyInteraction(MouseEvent initiatingEvent,                TaskRegularAreaChartItem taskArea, MouseSupport mouseSupport) {            super(initiatingEvent);            myStartPoint = initiatingEvent.getPoint();            myTask = taskArea.getTask();            myArrow = new DependencyInteractionRenderer(myStartPoint.x,                    myStartPoint.y, myStartPoint.x, myStartPoint.y);            myMouseSupport = mouseSupport;        }        public void apply(MouseEvent event) {            myArrow.changePoint2(event.getX(), event.getY());            // myDependant = myMouseSupport.findTaskUnderMousePointer(            // event.getX(), event.getY());            myLastMouseEvent = event;        }        public void finish() {            if (myLastMouseEvent != null) {                myDependant = myMouseSupport.findTaskUnderMousePointer(                        myLastMouseEvent.getX(), myLastMouseEvent.getY());                final Task dependee = myTask;                if (myDependant != null) {                    if (getTaskManager().getDependencyCollection()                            .canCreateDependency(myDependant, dependee)) {                        getUndoManager().undoableEdit("Draw dependency",

⌨️ 快捷键说明

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