001: /*******************************************************************************
002: * Copyright (c) 2006, 2007 IBM Corporation and others.
003: * All rights reserved. This program and the accompanying materials
004: * are made available under the terms of the Eclipse Public License v1.0
005: * which accompanies this distribution, and is available at
006: * http://www.eclipse.org/legal/epl-v10.html
007: *
008: * Contributors:
009: * IBM Corporation - initial API and implementation
010: *******************************************************************************/package org.eclipse.pde.internal.ui.editor.cheatsheet.comp;
011:
012: import org.eclipse.jface.viewers.ISelection;
013: import org.eclipse.pde.core.IModelChangedEvent;
014: import org.eclipse.pde.core.IModelChangedListener;
015: import org.eclipse.pde.internal.core.icheatsheet.comp.ICompCS;
016: import org.eclipse.pde.internal.core.icheatsheet.comp.ICompCSTask;
017: import org.eclipse.pde.internal.core.icheatsheet.comp.ICompCSTaskGroup;
018: import org.eclipse.pde.internal.ui.editor.PDEFormPage;
019: import org.eclipse.pde.internal.ui.editor.PDEMasterDetailsBlock;
020: import org.eclipse.pde.internal.ui.editor.PDESection;
021: import org.eclipse.pde.internal.ui.editor.cheatsheet.comp.details.CompCSDetails;
022: import org.eclipse.pde.internal.ui.editor.cheatsheet.comp.details.CompCSTaskDetails;
023: import org.eclipse.pde.internal.ui.editor.cheatsheet.comp.details.CompCSTaskGroupDetails;
024: import org.eclipse.swt.widgets.Composite;
025: import org.eclipse.ui.forms.DetailsPart;
026: import org.eclipse.ui.forms.IDetailsPage;
027: import org.eclipse.ui.forms.IDetailsPageProvider;
028: import org.eclipse.ui.forms.IManagedForm;
029:
030: /**
031: * CompCSBlock
032: *
033: */
034: public class CompCSBlock extends PDEMasterDetailsBlock implements
035: IModelChangedListener, IDetailsPageProvider {
036:
037: private CompCSMasterTreeSection fMasterSection;
038:
039: private CompCSDetails fDetails;
040:
041: private CompCSTaskGroupDetails fTaskGroupDetails;
042:
043: private CompCSTaskDetails fTaskDetails;
044:
045: /**
046: * @param page
047: */
048: public CompCSBlock(PDEFormPage page) {
049: super (page);
050: }
051:
052: /* (non-Javadoc)
053: * @see org.eclipse.pde.internal.ui.editor.PDEMasterDetailsBlock#createMasterSection(org.eclipse.ui.forms.IManagedForm, org.eclipse.swt.widgets.Composite)
054: */
055: protected PDESection createMasterSection(IManagedForm managedForm,
056: Composite parent) {
057: fMasterSection = new CompCSMasterTreeSection(getPage(), parent);
058: return fMasterSection;
059: }
060:
061: /* (non-Javadoc)
062: * @see org.eclipse.ui.forms.MasterDetailsBlock#registerPages(org.eclipse.ui.forms.DetailsPart)
063: */
064: protected void registerPages(DetailsPart detailsPart) {
065: // Only static pages to be defined. Do not cache pages
066: detailsPart.setPageLimit(0);
067: // Register static page: compositeCheatsheet
068: fDetails = new CompCSDetails(fMasterSection);
069: detailsPart.registerPage(CompCSDetails.class, fDetails);
070: // Register static page: taskGroup
071: fTaskGroupDetails = new CompCSTaskGroupDetails(fMasterSection);
072: detailsPart.registerPage(CompCSTaskGroupDetails.class,
073: fTaskGroupDetails);
074: // Register static page: task
075: fTaskDetails = new CompCSTaskDetails(fMasterSection);
076: detailsPart.registerPage(CompCSTaskDetails.class, fTaskDetails);
077: // Set this class as the page provider
078: detailsPart.setPageProvider(this );
079: }
080:
081: /* (non-Javadoc)
082: * @see org.eclipse.ui.forms.IDetailsPageProvider#getPageKey(java.lang.Object)
083: */
084: public Object getPageKey(Object object) {
085: // Get static page key
086: if (object instanceof ICompCS) {
087: // Static page: compositeCheatsheet
088: return CompCSDetails.class;
089: } else if (object instanceof ICompCSTaskGroup) {
090: // Static page: taskGroup
091: return CompCSTaskGroupDetails.class;
092: } else if (object instanceof ICompCSTask) {
093: // Static page: task
094: return CompCSTaskDetails.class;
095: }
096: // Should never reach here
097: return object.getClass();
098: }
099:
100: /* (non-Javadoc)
101: * @see org.eclipse.ui.forms.IDetailsPageProvider#getPage(java.lang.Object)
102: */
103: public IDetailsPage getPage(Object key) {
104: // No dynamic pages. Static pages already registered
105: return null;
106: }
107:
108: /* (non-Javadoc)
109: * @see org.eclipse.pde.core.IModelChangedListener#modelChanged(org.eclipse.pde.core.IModelChangedEvent)
110: */
111: public void modelChanged(IModelChangedEvent event) {
112: // Inform the master section
113: if (fMasterSection != null) {
114: fMasterSection.modelChanged(event);
115: }
116: // Inform the details section
117: // Unnecessary
118: //if (fCurrentDetailsSection != null) {
119: // fCurrentDetailsSection.modelChanged(event);
120: //}
121: }
122:
123: /**
124: * @return
125: */
126: public CompCSMasterTreeSection getMastersSection() {
127: return fMasterSection;
128: }
129:
130: /**
131: * @return
132: */
133: public ISelection getSelection() {
134: if (fMasterSection != null) {
135: return fMasterSection.getSelection();
136: }
137: return null;
138: }
139:
140: }
|