import org.argeo.ArgeoMonitor;
import org.argeo.eclipse.ui.EclipseArgeoMonitor;
-import org.argeo.eclipse.ui.EclipseUiUtils;
import org.argeo.eclipse.ui.utils.CommandUtils;
import org.argeo.jcr.JcrUtils;
import org.argeo.slc.SlcException;
import org.argeo.slc.client.ui.dist.DistConstants;
-import org.argeo.slc.client.ui.dist.DistImages;
import org.argeo.slc.client.ui.dist.DistPlugin;
import org.argeo.slc.client.ui.dist.PrivilegedJob;
import org.argeo.slc.client.ui.dist.commands.DeleteArtifacts;
import org.argeo.slc.client.ui.dist.commands.OpenModuleEditor;
-import org.argeo.slc.client.ui.dist.utils.NodeViewerComparator;
+import org.argeo.slc.client.ui.dist.utils.DistNodeViewerComparator;
import org.argeo.slc.jcr.SlcNames;
import org.argeo.slc.jcr.SlcTypes;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.ui.forms.editor.FormPage;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.ScrolledForm;
+import org.eclipse.ui.forms.widgets.Section;
/** Show all bundles contained in a given workspace as filter-able table */
public class DistWkspSearchPage extends FormPage implements SlcNames {
private DistWorkspaceEditor formEditor;
private FormToolkit tk;
- private NodeViewerComparator comparator;
+ private DistNodeViewerComparator comparator;
private TableViewer viewer;
// private Composite header;
private Text artifactTxt;
- private final static String FILTER_HELP_MSG = "Search bundles in the current workspace";
+ private final static String FILTER_HELP_MSG = "Filter criterion, separated by a space";
public DistWkspSearchPage(DistWorkspaceEditor formEditor, String title,
Session session) {
header.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
createHeaderPart(form, header);
- // filter text
+ Composite modules = tk.createComposite(body);
+ modules.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ populateModuleSection(modules);
+ }
+
+ private void createHeaderPart(ScrolledForm form, Composite parent) {
+ GridLayout layout = new GridLayout(4, false);
+ // layout.marginWidth = layout.marginHeight = layout.verticalSpacing =
+ // 0;
+ // layout.horizontalSpacing = 2;
+ parent.setLayout(layout);
+
+ String wkspName = ((DistWkspEditorInput) getEditorInput())
+ .getWorkspaceName();
+ wkspName = wkspName.replaceAll("-", " ");
+ form.setText(wkspName);
+
+ String repoAlias = "";
+ Node repoNode = ((DistWorkspaceEditor) getEditor()).getRepoNode();
+ if (repoNode != null)
+ try {
+ repoAlias = repoNode.isNodeType(NodeType.MIX_TITLE) ? repoNode
+ .getProperty(Property.JCR_TITLE).getString() : repoNode
+ .getName();
+ } catch (RepositoryException e1) {
+ throw new SlcException("Unable to get repository alias ", e1);
+ }
+ else
+ repoAlias = " - ";
+
+ createLT(parent, "Repository alias", repoAlias);
+ createLT(parent, "URI",
+ ((DistWkspEditorInput) getEditorInput()).getUri());
+ }
+
+ private void populateModuleSection(Composite parent) {
+ GridLayout layout = new GridLayout(1, false);
+ layout.marginWidth = layout.horizontalSpacing = layout.horizontalSpacing = layout.marginHeight = 0;
+ parent.setLayout(layout);
+
+ Section section = tk.createSection(parent, Section.TITLE_BAR
+ | Section.DESCRIPTION);
+ section.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ section.setText("Artifacts");
+ section.setDescription("Search among all artifacts that are referenced in the current workspace");
+ section.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ Composite body = tk.createComposite(section);
+ layout = new GridLayout(1, false);
+ layout.marginWidth = layout.horizontalSpacing = layout.horizontalSpacing = layout.marginHeight = 0;
+ body.setLayout(new GridLayout());
+
+ // Filter
Composite filter = tk.createComposite(body);
filter.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
createFilterPart(filter);
- // the table
+ // Table
Composite tableCmp = tk.createComposite(body);
tableCmp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
createTableViewer(tableCmp);
+
+ section.setClient(body);
}
/** Build repository request */
}
- private void createHeaderPart(ScrolledForm form, Composite parent) {
- GridLayout layout = new GridLayout(4, false);
- layout.marginWidth = layout.marginHeight = layout.verticalSpacing = 0;
- layout.horizontalSpacing = 5;
- parent.setLayout(layout);
-
- String wkspName = ((DistWkspEditorInput) getEditorInput())
- .getWorkspaceName();
- // wkspName = "Workspace " + wkspName;
- form.setText(wkspName);
-
- // form.setMessage("Choose in the below list "
- // + "the categories that can be used as base for "
- // + "modular distributions maintained via the current workspace",
- // IMessageProvider.NONE);
-
- String repoAlias = "";
- Node repoNode = ((DistWorkspaceEditor) getEditor()).getRepoNode();
- if (repoNode != null)
- try {
- repoAlias = repoNode.isNodeType(NodeType.MIX_TITLE) ? repoNode
- .getProperty(Property.JCR_TITLE).getString() : repoNode
- .getName();
- } catch (RepositoryException e1) {
- throw new SlcException("Unable to get repository alias ", e1);
- }
- else
- repoAlias = " - ";
-
- createLT(parent, "Repository alias", repoAlias);
- createLT(parent, "URI",
- ((DistWkspEditorInput) getEditorInput()).getUri());
- }
-
private Text createLT(Composite parent, String labelValue, String textValue) {
- Label label = tk.createLabel(parent, labelValue, SWT.RIGHT);
- label.setFont(EclipseUiUtils.getBoldFont(parent));
+ Label label = new Label(parent, SWT.RIGHT);
+ label.setText(labelValue);
+ // label.setFont(EclipseUiUtils.getBoldFont(parent));
label.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false));
// Add a trailing space to workaround a display glitch in RAP 1.3
- Text text = tk.createText(parent, textValue + " ", SWT.LEFT);
+ Text text = new Text(parent, SWT.LEFT); // | SWT.BORDER
+ text.setText(textValue + " ");
text.setEditable(false);
return text;
}
private void createFilterPart(Composite parent) {
- GridLayout layout = new GridLayout(2, false);
+ GridLayout layout = new GridLayout();
layout.marginWidth = layout.marginHeight = layout.verticalSpacing = 0;
layout.horizontalSpacing = 5;
parent.setLayout(layout);
refreshFilteredList();
}
});
-
- Button resetBtn = tk.createButton(parent, null, SWT.PUSH);
- resetBtn.setImage(DistImages.IMG_REPO_READONLY);
- resetBtn.addSelectionListener(new SelectionListener() {
-
- public void widgetSelected(SelectionEvent e) {
- resetFilter();
- }
-
- public void widgetDefaultSelected(SelectionEvent e) {
- }
- });
- }
-
- private void resetFilter() {
- artifactTxt.setText("");
- artifactTxt.setMessage(FILTER_HELP_MSG);
}
private void refreshFilteredList() {
});
col.getColumn().addSelectionListener(getSelectionAdapter(2));
propertiesList.add(SLC_BUNDLE_VERSION);
- propertyTypesList.add(PropertyType.STRING);
+ propertyTypesList.add(DistNodeViewerComparator.VERSION_TYPE);
final Table table = viewer.getTable();
table.setHeaderVisible(true);
viewer.setContentProvider(new DistributionsContentProvider());
getSite().setSelectionProvider(viewer);
- comparator = new NodeViewerComparator(2,
- NodeViewerComparator.ASCENDING, propertiesList,
+ comparator = new DistNodeViewerComparator(2,
+ DistNodeViewerComparator.ASCENDING, propertiesList,
propertyTypesList);
viewer.setComparator(comparator);
}
}
}
-
- /**
- * UI Trick to put scroll bar on the table rather than on the scrollform
- */
- private void refreshLayout() {
- // // Compute desired table size
- // int maxH = getManagedForm().getForm().getSize().y;
- // int maxW = getManagedForm().getForm().getParent().getSize().x;
- // // maxH = maxH - header.getSize().y;
- // final Table table = viewer.getTable();
- // GridData gd = new GridData(SWT.LEFT, SWT.TOP, true, true);
- //
- // // when table height is less than 200 px, we let the scroll bar on
- // the
- // // scrollForm
- // // FIXME substract some spare space. There is room here for
- // optimization
- // gd.heightHint = Math.max(maxH - 35, 200);
- // gd.widthHint = Math.max(maxW - 35, 200);
- //
- // table.setLayoutData(gd);
- // getManagedForm().reflow(true);
- }
-
- @Override
- public void setActive(boolean active) {
- super.setActive(active);
- if (active) {
- refreshLayout();
- }
- }
}
\ No newline at end of file