001: /*******************************************************************************
002: * Copyright (c) 2000, 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.feature;
011:
012: import org.eclipse.jface.action.IStatusLineManager;
013: import org.eclipse.pde.internal.core.ifeature.IFeature;
014: import org.eclipse.pde.internal.core.ifeature.IFeatureModel;
015: import org.eclipse.pde.internal.ui.IHelpContextIds;
016: import org.eclipse.pde.internal.ui.IPDEUIConstants;
017: import org.eclipse.pde.internal.ui.PDELabelProvider;
018: import org.eclipse.pde.internal.ui.PDEPlugin;
019: import org.eclipse.pde.internal.ui.PDEPluginImages;
020: import org.eclipse.pde.internal.ui.PDEUIMessages;
021: import org.eclipse.pde.internal.ui.editor.FormLayoutFactory;
022: import org.eclipse.pde.internal.ui.editor.PDEFormEditor;
023: import org.eclipse.pde.internal.ui.editor.PDEFormPage;
024: import org.eclipse.pde.internal.ui.editor.build.BuildPage;
025: import org.eclipse.pde.internal.ui.util.SharedLabelProvider;
026: import org.eclipse.swt.SWTException;
027: import org.eclipse.swt.custom.BusyIndicator;
028: import org.eclipse.swt.layout.GridData;
029: import org.eclipse.swt.widgets.Composite;
030: import org.eclipse.ui.PlatformUI;
031: import org.eclipse.ui.forms.IManagedForm;
032: import org.eclipse.ui.forms.events.HyperlinkEvent;
033: import org.eclipse.ui.forms.events.IHyperlinkListener;
034: import org.eclipse.ui.forms.widgets.ExpandableComposite;
035: import org.eclipse.ui.forms.widgets.FormText;
036: import org.eclipse.ui.forms.widgets.FormToolkit;
037: import org.eclipse.ui.forms.widgets.ScrolledForm;
038: import org.eclipse.ui.forms.widgets.Section;
039: import org.eclipse.ui.forms.widgets.TableWrapData;
040:
041: /**
042: * Feature page.
043: */
044: public class FeatureFormPage extends PDEFormPage implements
045: IHyperlinkListener {
046: public static final String PAGE_ID = "feature"; //$NON-NLS-1$
047:
048: private FeatureSpecSection fSpecSection;
049:
050: private PortabilitySection fPortabilitySection;
051:
052: public FeatureFormPage(PDEFormEditor editor, String title) {
053: super (editor, PAGE_ID, title);
054: }
055:
056: /* (non-Javadoc)
057: * @see org.eclipse.pde.internal.ui.editor.PDEFormPage#getHelpResource()
058: */
059: protected String getHelpResource() {
060: return IPDEUIConstants.PLUGIN_DOC_ROOT
061: + "guide/tools/editors/feature_editor/overview.htm"; //$NON-NLS-1$
062: }
063:
064: protected void createFormContent(IManagedForm managedForm) {
065: super .createFormContent(managedForm);
066: ScrolledForm form = managedForm.getForm();
067: FormToolkit toolkit = managedForm.getToolkit();
068: form.getBody().setLayout(
069: FormLayoutFactory.createFormTableWrapLayout(true, 2));
070: // Set form header image
071: form.setImage(PDEPlugin.getDefault().getLabelProvider().get(
072: PDEPluginImages.DESC_FTR_XML_OBJ));
073:
074: TableWrapData twd;
075:
076: Composite left = toolkit.createComposite(form.getBody());
077: left.setLayout(FormLayoutFactory.createFormPaneTableWrapLayout(
078: false, 1));
079:
080: twd = new TableWrapData(TableWrapData.FILL_GRAB);
081: left.setLayoutData(twd);
082:
083: Composite right = toolkit.createComposite(form.getBody());
084: right.setLayout(FormLayoutFactory
085: .createFormPaneTableWrapLayout(false, 1));
086:
087: twd = new TableWrapData(TableWrapData.FILL_GRAB);
088: right.setLayoutData(twd);
089:
090: fSpecSection = new FeatureSpecSection(this , left);
091: fPortabilitySection = new PortabilitySection(this , left);
092: twd = new TableWrapData();
093: twd.grabHorizontal = true;
094: fPortabilitySection.getSection().setLayoutData(twd);
095:
096: createContentSection(managedForm, right, toolkit);
097: createPackagingSection(managedForm, right, toolkit);
098: createPublishingSection(managedForm, right, toolkit);
099:
100: managedForm.addPart(fSpecSection);
101: managedForm.addPart(fPortabilitySection);
102:
103: PlatformUI.getWorkbench().getHelpSystem().setHelp(
104: form.getBody(),
105: IHelpContextIds.MANIFEST_FEATURE_OVERVIEW);
106: initialize();
107: }
108:
109: public void initialize() {
110: IFeatureModel model = (IFeatureModel) getModel();
111: IFeature feature = model.getFeature();
112: getManagedForm().getForm().setText(
113: model.getResourceString(feature.getLabel()));
114: }
115:
116: private Section createContentSection(IManagedForm managedForm,
117: Composite parent, FormToolkit toolkit) {
118: Section section = createStaticSection(parent, toolkit);
119: FormText text;
120: section
121: .setText(PDEUIMessages.FeatureEditor_InfoPage_ContentSection_title);
122: text = createClient(
123: section,
124: PDEUIMessages.FeatureEditor_InfoPage_ContentSection_text,
125: toolkit);
126: PDELabelProvider lp = PDEPlugin.getDefault().getLabelProvider();
127: text.setImage("page", lp.get(PDEPluginImages.DESC_PAGE_OBJ, //$NON-NLS-1$
128: SharedLabelProvider.F_EDIT));
129: return section;
130: }
131:
132: private Section createPackagingSection(IManagedForm managedForm,
133: Composite parent, FormToolkit toolkit) {
134: Section section = createStaticSection(parent, toolkit);
135: section
136: .setText(PDEUIMessages.FeatureEditor_InfoPage_PackagingSection_title);
137: // ImageHyperlink info = new ImageHyperlink(section, SWT.NULL);
138: // toolkit.adapt(info, true, true);
139: // Image image =
140: // PDEPlugin.getDefault().getLabelProvider().get(PDEPluginImages.DESC_HELP);
141: // info.setImage(image);
142: // info.addHyperlinkListener(new HyperlinkAdapter() {
143: // public void linkActivated(HyperlinkEvent e) {
144: // WorkbenchHelp
145: // .displayHelpResource(PDEPlugin.getResourceString("OverviewPage.help.deploy"));
146: // //$NON-NLS-1$
147: // }
148: // });
149: // info.setBackground(section.getTitleBarGradientBackground());
150: // section.setTextClient(info);
151: createClient(
152: section,
153: PDEUIMessages.FeatureEditor_InfoPage_PackagingSection_text,
154: toolkit);
155: return section;
156: }
157:
158: private Section createPublishingSection(IManagedForm managedForm,
159: Composite parent, FormToolkit toolkit) {
160: Section section = createStaticSection(parent, toolkit);
161: section
162: .setText(PDEUIMessages.FeatureEditor_InfoPage_PublishingSection_title);
163: // ImageHyperlink info = new ImageHyperlink(section, SWT.NULL);
164: // toolkit.adapt(info, true, true);
165: // Image image =
166: // PDEPlugin.getDefault().getLabelProvider().get(PDEPluginImages.DESC_HELP);
167: // info.setImage(image);
168: // info.addHyperlinkListener(new HyperlinkAdapter() {
169: // public void linkActivated(HyperlinkEvent e) {
170: // WorkbenchHelp
171: // .displayHelpResource(PDEPlugin.getResourceString("OverviewPage.help.deploy"));
172: // //$NON-NLS-1$
173: // }
174: // });
175: // info.setBackground(section.getTitleBarGradientBackground());
176: // section.setTextClient(info);
177: createClient(
178: section,
179: PDEUIMessages.FeatureEditor_InfoPage_PublishingSection_text,
180: toolkit);
181: return section;
182: }
183:
184: private FormText createClient(Section section, String content,
185: FormToolkit toolkit) {
186: FormText text = toolkit.createFormText(section, true);
187: try {
188: text.setText(content, true, false);
189: } catch (SWTException e) {
190: text.setText(e.getMessage(), false, false);
191: }
192: section.setClient(text);
193: section
194: .setLayoutData(new TableWrapData(
195: TableWrapData.FILL_GRAB));
196: text.addHyperlinkListener(this );
197: return text;
198: }
199:
200: private Section createStaticSection(Composite parent,
201: FormToolkit toolkit) {
202: Section section = toolkit.createSection(parent,
203: ExpandableComposite.TITLE_BAR);
204: section.clientVerticalSpacing = FormLayoutFactory.SECTION_HEADER_VERTICAL_SPACING;
205: section.setLayout(FormLayoutFactory.createClearGridLayout(
206: false, 1));
207: GridData data = new GridData(GridData.FILL_HORIZONTAL);
208: section.setLayoutData(data);
209: // toolkit.createCompositeSeparator(section);
210: return section;
211: }
212:
213: /*
214: * (non-Javadoc)
215: *
216: * @see org.eclipse.ui.forms.events.HyperlinkListener#linkActivated(org.eclipse.ui.forms.events.HyperlinkEvent)
217: */
218: public void linkActivated(HyperlinkEvent e) {
219: String href = (String) e.getHref();
220: // try page references
221: if (href.equals("info")) //$NON-NLS-1$
222: getEditor().setActivePage(InfoFormPage.PAGE_ID);
223: if (href.equals("plugins")) //$NON-NLS-1$
224: getEditor().setActivePage(FeatureReferencePage.PAGE_ID);
225: else if (href.equals("features")) //$NON-NLS-1$
226: getEditor().setActivePage(FeatureIncludesPage.PAGE_ID);
227: else if (href.equals("dependencies")) //$NON-NLS-1$
228: getEditor().setActivePage(FeatureDependenciesPage.PAGE_ID);
229: else if (href.equals("installHandler")) //$NON-NLS-1$
230: getEditor().setActivePage(FeatureAdvancedPage.PAGE_ID);
231: else if (href.equals("build")) //$NON-NLS-1$
232: getEditor().setActivePage(BuildPage.PAGE_ID);
233: else if (href.equals("synchronize")) { //$NON-NLS-1$ {
234: getEditor().setActivePage(FeatureReferencePage.PAGE_ID);
235: final FeatureEditorContributor contributor = (FeatureEditorContributor) getPDEEditor()
236: .getContributor();
237: BusyIndicator.showWhile(e.display, new Runnable() {
238: public void run() {
239: contributor.getSynchronizeAction().run();
240: }
241: });
242: } else if (href.equals("export")) { //$NON-NLS-1$
243: ((FeatureEditor) getPDEEditor()).getFeatureExportAction()
244: .run();
245: } else if (href.equals("siteProject")) { //$NON-NLS-1$
246: getEditor().doSave(null);
247: final FeatureEditorContributor contributor = (FeatureEditorContributor) getPDEEditor()
248: .getContributor();
249: BusyIndicator.showWhile(e.display, new Runnable() {
250: public void run() {
251: contributor.getNewSiteAction().run();
252: }
253: });
254: }
255: }
256:
257: /*
258: * (non-Javadoc)
259: *
260: * @see org.eclipse.ui.forms.events.HyperlinkListener#linkEntered(org.eclipse.ui.forms.events.HyperlinkEvent)
261: */
262: public void linkEntered(HyperlinkEvent e) {
263: IStatusLineManager mng = getEditor().getEditorSite()
264: .getActionBars().getStatusLineManager();
265: mng.setMessage(e.getLabel());
266: }
267:
268: /*
269: * (non-Javadoc)
270: *
271: * @see org.eclipse.ui.forms.events.HyperlinkListener#linkExited(org.eclipse.ui.forms.events.HyperlinkEvent)
272: */
273: public void linkExited(HyperlinkEvent e) {
274: IStatusLineManager mng = getEditor().getEditorSite()
275: .getActionBars().getStatusLineManager();
276: mng.setMessage(null);
277: }
278: }
|