blob: 9f31161228961e1f0899f9861515ba664514c917 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2003, 2015 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.pde.internal.ui.editor.plugin;
import java.util.ArrayList;
import org.eclipse.pde.internal.ui.*;
import org.eclipse.pde.internal.ui.editor.FormLayoutFactory;
import org.eclipse.pde.internal.ui.editor.PDEFormPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.forms.IManagedForm;
import org.eclipse.ui.forms.editor.FormEditor;
import org.eclipse.ui.forms.widgets.*;
public class DependenciesPage extends PDEFormPage {
public static final String PAGE_ID = "dependencies"; //$NON-NLS-1$
public DependenciesPage(FormEditor editor) {
super(editor, PAGE_ID, PDEUIMessages.DependenciesPage_tabName);
}
@Override
protected String getHelpResource() {
return IHelpContextIds.MANIFEST_PLUGIN_DEPENDENCIES;
}
@Override
protected void createFormContent(IManagedForm managedForm) {
super.createFormContent(managedForm);
boolean isBundle = isBundle();
ScrolledForm form = managedForm.getForm();
form.setImage(PDEPlugin.getDefault().getLabelProvider().get(PDEPluginImages.DESC_REQ_PLUGINS_OBJ));
form.setText(PDEUIMessages.DependenciesPage_title);
Composite body = form.getBody();
body.setLayout(FormLayoutFactory.createFormGridLayout(isBundle, 2));
Composite left, right;
FormToolkit toolkit = managedForm.getToolkit();
left = toolkit.createComposite(body, SWT.NONE);
left.setLayout(FormLayoutFactory.createFormPaneGridLayout(false, 1));
left.setLayoutData(new GridData(GridData.FILL_BOTH));
right = toolkit.createComposite(body, SWT.NONE);
right.setLayout(FormLayoutFactory.createFormPaneGridLayout(false, 1));
right.setLayoutData(new GridData(GridData.FILL_BOTH));
RequiresSection requiresSection = new RequiresSection(this, left, getRequiredSectionLabels());
managedForm.addPart(requiresSection);
DependencyAnalysisSection section;
GridData gd = new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING);
gd.widthHint = 150;
if (isBundle) {
ImportPackageSection importPackageSection = new ImportPackageSection(this, right);
importPackageSection.getSection().descriptionVerticalSpacing = requiresSection.getSection().getTextClientHeightDifference();
managedForm.addPart(importPackageSection);
if (getModel().isEditable())
managedForm.addPart(new DependencyManagementSection(this, left));
else
gd.horizontalSpan = 2;
section = new DependencyAnalysisSection(this, right, ExpandableComposite.COMPACT);
} else {
// No MANIFEST.MF (not a Bundle), 3.0 timeframe
MatchSection matchSection = new MatchSection(this, right, true);
matchSection.getSection().descriptionVerticalSpacing = requiresSection.getSection().getTextClientHeightDifference();
managedForm.addPart(matchSection);
section = new DependencyAnalysisSection(this, right, ExpandableComposite.EXPANDED);
}
section.getSection().setLayoutData(gd);
PlatformUI.getWorkbench().getHelpSystem().setHelp(form.getBody(), IHelpContextIds.MANIFEST_PLUGIN_DEPENDENCIES);
}
private boolean isBundle() {
return getPDEEditor().getContextManager().findContext(BundleInputContext.CONTEXT_ID) != null;
}
private String[] getRequiredSectionLabels() {
ArrayList<String> labels = new ArrayList<>();
labels.add(PDEUIMessages.RequiresSection_add);
labels.add(PDEUIMessages.RequiresSection_delete);
labels.add(PDEUIMessages.RequiresSection_up);
labels.add(PDEUIMessages.RequiresSection_down);
if (isBundle())
labels.add(PDEUIMessages.DependenciesPage_properties);
return labels.toArray(new String[labels.size()]);
}
}