package bndtools.editor.pages;
import org.bndtools.core.ui.ExtendedFormEditor;
import org.bndtools.core.ui.IFormPageFactory;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.forms.IManagedForm;
import org.eclipse.ui.forms.editor.FormEditor;
import org.eclipse.ui.forms.editor.FormPage;
import org.eclipse.ui.forms.editor.IFormPage;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.ScrolledForm;
import org.eclipse.ui.forms.widgets.Section;
import aQute.bnd.build.model.BndEditModel;
import aQute.bnd.build.model.clauses.HeaderClause;
import bndtools.editor.workspace.PluginPathPart;
import bndtools.editor.workspace.PluginsPart;
import bndtools.editor.workspace.WorkspaceMainPart;
import bndtools.utils.MessageHyperlinkAdapter;
public class WorkspacePage extends FormPage {
private final BndEditModel model;
private PluginsPart pluginsPart;
public static final IFormPageFactory MAIN_FACTORY = new IFormPageFactory() {
public IFormPage createPage(ExtendedFormEditor editor, BndEditModel model, String id) throws IllegalArgumentException {
return new WorkspacePage(true, editor, model, id, "Workspace");
}
public boolean supportsMode(Mode mode) {
return mode == Mode.workspace;
}
};
public static final IFormPageFactory EXT_FACTORY = new IFormPageFactory() {
public IFormPage createPage(ExtendedFormEditor editor, BndEditModel model, String id) throws IllegalArgumentException {
return new WorkspacePage(false, editor, model, id, "Workspace");
}
public boolean supportsMode(Mode mode) {
return mode == Mode.workspace;
}
};
private final boolean mainBuildFile;
private WorkspacePage(boolean mainBuildFile, FormEditor editor, BndEditModel model, String id, String title) {
super(editor, id, title);
this.mainBuildFile = mainBuildFile;
this.model = model;
}
@Override
protected void createFormContent(IManagedForm managedForm) {
managedForm.setInput(model);
FormToolkit tk = managedForm.getToolkit();
ScrolledForm form = managedForm.getForm();
form.setText("Workspace Config");
tk.decorateFormHeading(form.getForm());
form.getForm().addMessageHyperlinkListener(new MessageHyperlinkAdapter(getEditor()));
// Create controls
Composite body = form.getBody();
WorkspaceMainPart linksPart = new WorkspaceMainPart(mainBuildFile, body, tk, Section.TITLE_BAR | Section.EXPANDED | Section.DESCRIPTION);
managedForm.addPart(linksPart);
PluginPathPart pluginPathPart = new PluginPathPart(body, tk, Section.TITLE_BAR | Section.EXPANDED | Section.DESCRIPTION | Section.TWISTIE);
managedForm.addPart(pluginPathPart);
pluginsPart = new PluginsPart(body, tk, Section.TITLE_BAR | Section.EXPANDED | Section.DESCRIPTION | Section.TWISTIE);
managedForm.addPart(pluginsPart);
// Layout
GridLayout layout = new GridLayout(1, false);
body.setLayout(layout);
linksPart.getSection().setLayoutData(PageLayoutUtils.createCollapsed());
pluginPathPart.getSection().setLayoutData(PageLayoutUtils.createExpanded());
pluginPathPart.getSection().addExpansionListener(new ResizeExpansionAdapter(pluginPathPart.getSection()));
pluginsPart.getSection().setLayoutData(PageLayoutUtils.createExpanded());
pluginsPart.getSection().addExpansionListener(new ResizeExpansionAdapter(pluginsPart.getSection()));
}
public void setSelectedPlugin(HeaderClause header) {
pluginsPart.getSelectionProvider().setSelection(new StructuredSelection(header));
}
}