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

📄 ganttcharttabcontentpanel.java

📁 It is all about project scheduling. GanttProject is a tool for creating a project schedule by means
💻 JAVA
字号:
/* * Created on 22.10.2005 */package net.sourceforge.ganttproject;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Component;import java.awt.ComponentOrientation;import java.awt.Container;import java.awt.Dimension;import java.awt.Toolkit;import java.awt.event.AdjustmentEvent;import java.awt.event.AdjustmentListener;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.util.Date;import javax.swing.Action;import javax.swing.BorderFactory;import javax.swing.Box;import javax.swing.JComponent;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JScrollBar;import javax.swing.JScrollPane;import javax.swing.JSplitPane;import org.eclipse.core.runtime.IAdaptable;import net.sourceforge.ganttproject.GanttResourcePanel.CustomScrollPane.CustomViewport;import net.sourceforge.ganttproject.action.task.LinkTasksAction;import net.sourceforge.ganttproject.action.task.UnlinkTasksAction;import net.sourceforge.ganttproject.chart.Chart;import net.sourceforge.ganttproject.chart.overview.OverviewPaneAction;import net.sourceforge.ganttproject.gui.TaskTreeUIFacade;import net.sourceforge.ganttproject.gui.TestGanttRolloverButton;import net.sourceforge.ganttproject.gui.UIFacade;import net.sourceforge.ganttproject.gui.zoom.ZoomEvent;import net.sourceforge.ganttproject.gui.zoom.ZoomListener;import net.sourceforge.ganttproject.language.GanttLanguage;import net.sourceforge.ganttproject.time.gregorian.GregorianCalendar;class GanttChartTabContentPanel implements IAdaptable {    private JSplitPane mySplitPane;    private Component myTaskTree;    private JComponent myGanttChart;    private final TaskTreeUIFacade myTreeFacade;    private JPanel myTabContentPanel;    private final IGanttProject myProject;    private final UIFacade myWorkbenchFacade;    //private  CustomScrollPane scrollPane2 ;	private final OverviewPaneAction myOverviewAction;                GanttChartTabContentPanel(IGanttProject project, UIFacade workbenchFacade, TaskTreeUIFacade treeFacade, JComponent ganttChart) {        myProject = project;        myWorkbenchFacade = workbenchFacade;        myTreeFacade = treeFacade;        myTaskTree = treeFacade.getTreeComponent();        myGanttChart = ganttChart;        myOverviewAction = new OverviewPaneAction(workbenchFacade);        //scrollPane2 = new CustomScrollPane(myGanttChart);    }        /**     *      * The pane contains the chart in its viewPort and      * a custom scroll bar     *      */        //    class CustomScrollPane extends JPanel {//    	protected JScrollBar m_horzSB;//    	protected CustomViewport m_viewport;//    	protected JComponent m_comp;//    	protected Dimension layoutSize;//    	protected AdjustmentListener scroll;//		protected Date startProjectDate = null;//		protected Date startFrameDate = null;//		protected Date endFrameDate = null;//		protected Date endProjectDate = null;//    	protected int xPosition = 0 ;//    	protected int mini = 0;//		////    	/** //    	 * Short description of what the constructor is doing//    	 *//    	 * @param comp    this is the chart//    	 * //    	 *  it fills he viewPort, the scrollbar and an //    	 *  adjustment listener.//    	 *///    	public CustomScrollPane(JComponent comp){//    		if (comp == null){//    			throw new IllegalArgumentException("Component cannot be null");//    		}//    		setLayout(null);//    		m_viewport = new CustomViewport();//    		m_viewport.setLayout(null);//    		add(m_viewport);//    		m_comp = comp;//    		m_viewport.add(m_comp);    		//    		m_horzSB = new JScrollBar(JScrollBar.HORIZONTAL,0,0,0,0);//    		m_horzSB.setUnitIncrement(5);//    		add(m_horzSB);////    		scroll = new AdjustmentListener() {//    			public void adjustmentValueChanged(AdjustmentEvent e){////    	    			setChartDateFromBlockPosition();//    	    			unlimitedScrolling();////    	    		}//    		};//    		m_horzSB.addAdjustmentListener(scroll);//    		//    	}//    	//    	/** //    	 * //    	 * enables the block(scrolling) not to stop//    	 * at the end and at the start of the scrollbar. //    	 * //    	 * //    	 *///    	public void unlimitedScrolling(){//    		if(xPosition <= m_horzSB.getMinimum()){		 //        	    getHorzSB()//        	    	.removeAdjustmentListener(scroll);//        		//        			m_horzSB.setMinimum(m_horzSB.getMinimum()- 10);//        		getHorzSB()//        	       .addAdjustmentListener(scroll);//        	    xPosition=m_horzSB.getValue();//        	}//    		else if(xPosition >= m_horzSB.getMaximum() - m_horzSB.getVisibleAmount()){		 //        	    getHorzSB()//    	    		.removeAdjustmentListener(scroll);//    		//    			m_horzSB.setMaximum(m_horzSB.getMaximum() + 10);//    			//    			getHorzSB()//    	        	.addAdjustmentListener(scroll);//    			xPosition=m_horzSB.getValue();//    		}//    		//    	}//    	//    	public JScrollBar getHorzSB(){//    		return m_horzSB;//    	}//    	public AdjustmentListener getAdjustmentListener(){//    		return scroll;//    	}//    	/** //    	 * //    	 * It sets the scrollbar block position from//    	 *  the starting date of the frame.//    	 * //    	 * //    	 *///    	void setBlockFromChart(){//    		//    		long startFrameTime = Mediator.getGanttProjectSingleton().getArea().getChartModel().getStartDate().getTime();//    		long startProjectTime = Mediator.getGanttProjectSingleton().getTaskManager().getProjectStart().getTime();//startProjectDate.getTime();//    	    getHorzSB()//    		.removeAdjustmentListener(scroll);//    	    if (startFrameTime<startProjectTime)//	    		m_horzSB.setValue(m_horzSB.getMinimum());//    	    else//    	    	m_horzSB.setValue((int)Math.abs((startFrameTime-startProjectTime)/3600000));//			getHorzSB()//        	.addAdjustmentListener(scroll);//    	}//    	////    	//    	//    	/** //    	 * //    	 * It sets the starting date of the the frame//    	 * from the clock position//    	 * //    	 * //    	 *///    	//    	private void setChartDateFromBlockPosition(){//    		// project length//    		int xTemp = m_horzSB.getValue();//    		//    		//    		endProjectDate = Mediator.getGanttProjectSingleton().getTaskManager().getProjectEnd();//    		double endProjectTime = endProjectDate.getTime();////    		startProjectDate = Mediator.getGanttProjectSingleton().getTaskManager().getProjectStart();//    		double startProjectTime = startProjectDate.getTime();// //    		//    		double relativeEndOfProject;//    		int lgth = Mediator.getTaskManager().getTaskCount();//    		if(lgth == 0 ){// no tasks//    			relativeEndOfProject = 2880;//    		}//    		else{//    			relativeEndOfProject = (endProjectTime  - startProjectTime  ) /3600000.0 *1.09; // hours//    		}//    		//    		//    		float scrollLength = m_horzSB.getWidth();//    	//    		double bottomUnitWidth = (double)Mediator.getGanttProjectSingleton().getZoomManager().getZoomState().getBottomUnitWidth();//    		int zoom = Mediator.getGanttProjectSingleton().getZoomManager().getMyZooming();//    		double CONVERT;//    		double scrollHours;//    		long blockLength;//    		if (zoom>2){//    			CONVERT = bottomUnitWidth/(24.0 * 7.0) ; // 24 hours ==> pix / hour//    			 scrollHours  =  scrollLength / CONVERT;  // hours//    			 blockLength = Math.round(scrollHours)*2;//    		}//    		else{//    			CONVERT = 26.0 / 24.0 ; // 26 pixel is day with zoom 2//        		scrollHours =  scrollLength / CONVERT;  // hours//        		blockLength = Math.round(scrollHours);//    		}	//    			//    		//    		if (blockLength > relativeEndOfProject){//    			relativeEndOfProject = blockLength * 3 ;	//    		}////    		 set the block length	//    		m_horzSB.setValues(m_horzSB.getValue(),(int) blockLength,0, (int) relativeEndOfProject);// 		//    		double x;    		//    		x = m_horzSB.getValue();//    		//    		if(xPosition>xTemp  ){//left scrolling  		//	    		long time = Math.round(startProjectTime + x /CONVERT * 3600000);//	    		Date blockDate = new Date();//	    		blockDate.setTime(time); //	    		Mediator.getGanttProjectSingleton().getScrollingManager().scrollLeft(blockDate);//    		}//    		else if (xPosition<xTemp ){//right scrolling//        		long time = Math.round(startProjectTime + m_horzSB.getValue() /CONVERT * 3600000) + blockLength/2 * 3600000;//        		Date blockDate = new Date();//        		blockDate.setTime(time);        		//        		Mediator.getGanttProjectSingleton().getScrollingManager().scrollLeft(blockDate);//    		}//    		xPosition = m_horzSB.getValue();////    	}//    	//    	/** //    	 * //    	 * //    	 * Initialize the layout, viewPort, scrollbar.//    	 * //    	 * //    	 *///    	public void doLayout() {//    		layoutSize = getSize();//    		Dimension d0 = m_comp.getPreferredSize();//    		Dimension d2 = m_horzSB.getPreferredSize();////    		int h = Math.max(layoutSize.height - d2.height-1, 0);////    		m_viewport.setBounds(0, 0, layoutSize.width+100, h);//    		m_horzSB.setBounds(0, h, layoutSize.width, d2.height);//    		m_horzSB.setEnabled(true);//    	//    		setChartDateFromBlockPosition();////    	}//    	/** //    	 * //    	 * bounds of the custom view port//    	 * //    	 * //    	 *///    	class CustomViewport extends JPanel {//    		public void doLayout(){//    			m_comp.setBounds(0, 0, layoutSize.width, layoutSize.height);//    		}//    	}//    }//    //                 Component getComponent() {    	if (myTabContentPanel==null) {        JPanel left = new JPanel(new BorderLayout());        Box treeHeader = Box.createVerticalBox();	        GanttImagePanel but = new GanttImagePanel("big.png", 300,                42);        treeHeader.add(but);        left.add(treeHeader, BorderLayout.NORTH);        left.add(myTaskTree, BorderLayout.CENTER);        left.setPreferredSize(new Dimension(315, 600));        left.setBackground(new Color(102, 153, 153));                JPanel right = new JPanel(new BorderLayout());        //scrollPane2 = new CustomScrollPane(myGanttChart);        right.add(myGanttChart, BorderLayout.CENTER);        JLabel overviewAds = new JLabel("<html><body><b>Expected to see a scrollbar here?</b> Click me to see a better solution! <i>You may also use Ctrl-+ shortcut</i></body></html> ");        overviewAds.addMouseListener(new MouseAdapter() {			@Override			public void mouseClicked(MouseEvent arg0) {				myOverviewAction.actionPerformed(null);			}        });        right.add(overviewAds, BorderLayout.SOUTH);                // A splitpane is used        mySplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);        if (GanttLanguage.getInstance().getComponentOrientation() == ComponentOrientation.LEFT_TO_RIGHT) {            mySplitPane.setLeftComponent(left);            mySplitPane.setRightComponent(right);            mySplitPane                    .applyComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);            mySplitPane.setDividerLocation((int)left.getPreferredSize()                    .getWidth());        } else {            mySplitPane.setRightComponent(left);            mySplitPane.setLeftComponent(right);            mySplitPane.setDividerLocation((int) (Toolkit.getDefaultToolkit()                    .getScreenSize().getWidth() - left.getPreferredSize()                    .getWidth()));            mySplitPane                    .applyComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);        }        mySplitPane.setOneTouchExpandable(true);        mySplitPane.setPreferredSize(new Dimension(800, 500));        myTabContentPanel = new JPanel(new BorderLayout());        myTabContentPanel.add(createButtonPanel(), BorderLayout.NORTH);        myTabContentPanel.add(mySplitPane, BorderLayout.CENTER);    	}        return myTabContentPanel;            }        private Component createButtonPanel() {        Box buttonBar = Box.createHorizontalBox();        //JToolBar buttonBar = new JToolBar();        //buttonBar.setFloatable(false);        TestGanttRolloverButton unindentButton = new TestGanttRolloverButton(myTreeFacade.getUnindentAction()) {			public String getText() {				return null;			}                };        buttonBar.add(unindentButton);                TestGanttRolloverButton indentButton = new TestGanttRolloverButton(myTreeFacade.getIndentAction()) {			public String getText() {				return null;			}                	        };        buttonBar.add(indentButton);        //        buttonBar.add(Box.createHorizontalStrut(3));        //        TestGanttRolloverButton upButton = new TestGanttRolloverButton(myTreeFacade.getMoveUpAction()) {			public String getText() {				return null;			}                	        };        buttonBar.add(upButton);        //        TestGanttRolloverButton downButton = new TestGanttRolloverButton(myTreeFacade.getMoveDownAction()) {			public String getText() {				return null;			}                	        };        buttonBar.add(downButton);        //        buttonBar.add(Box.createHorizontalStrut(8));        Action linkAction = new LinkTasksAction(myProject.getTaskManager(), Mediator.getTaskSelectionManager(), myWorkbenchFacade);        myTreeFacade.setLinkTasksAction(linkAction);        TestGanttRolloverButton linkButton = new TestGanttRolloverButton(linkAction) {			public String getText() {				return null;			}                	        };        buttonBar.add(linkButton);        //        Action unlinkAction = new UnlinkTasksAction(myProject.getTaskManager(), Mediator.getTaskSelectionManager(), myWorkbenchFacade);        myTreeFacade.setUnlinkTasksAction(unlinkAction);        TestGanttRolloverButton unlinkButton = new TestGanttRolloverButton(unlinkAction) {			public String getText() {				return null;			}                	        };        buttonBar.add(unlinkButton);        //        JPanel buttonPanel = new JPanel(new BorderLayout());        buttonPanel.add(buttonBar, BorderLayout.WEST);        return buttonPanel;    }    int getDividerLocation() {        return mySplitPane.getDividerLocation();    }    void setDividerLocation(int location) {        mySplitPane.setDividerLocation(location);    }//    public CustomScrollPane getCustomScrollPane(){//    	return scrollPane2;//    }	public Object getAdapter(Class adapter) {		if (Container.class.equals(adapter)) {			return getComponent();		}		if (Chart.class.equals(adapter)) {			return myGanttChart;		}		return null;	}}

⌨️ 快捷键说明

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