Search in sources :

Example 1 with MapContentProvider

use of bndtools.editor.common.MapContentProvider in project bndtools by bndtools.

the class RunPropertiesPart method createSection.

private void createSection(Section section, FormToolkit toolkit) {
    section.setText("Runtime Properties");
    final Composite composite = toolkit.createComposite(section);
    section.setClient(composite);
    // Create controls: Run Properties
    Label lblRunProperties = toolkit.createLabel(composite, "OSGi Framework properties:");
    tblRunProperties = toolkit.createTable(composite, SWT.FULL_SELECTION | SWT.MULTI | SWT.BORDER);
    viewRunProperties = new TableViewer(tblRunProperties);
    runPropertiesModifier = new MapEntryCellModifier<>(viewRunProperties);
    tblRunProperties.setHeaderVisible(true);
    final TableColumn tblRunPropsCol1 = new TableColumn(tblRunProperties, SWT.NONE);
    tblRunPropsCol1.setText("Name");
    tblRunPropsCol1.setWidth(100);
    final TableColumn tblRunPropsCol2 = new TableColumn(tblRunProperties, SWT.NONE);
    tblRunPropsCol1.setText("Value");
    tblRunPropsCol1.setWidth(100);
    viewRunProperties.setUseHashlookup(true);
    viewRunProperties.setColumnProperties(MapEntryCellModifier.getColumnProperties());
    runPropertiesModifier.addCellEditorsToViewer();
    viewRunProperties.setCellModifier(runPropertiesModifier);
    viewRunProperties.setContentProvider(new MapContentProvider());
    viewRunProperties.setLabelProvider(new PropertiesTableLabelProvider());
    Control createRemovePropsToolBar = createRemovePropsPart.createControl(composite, SWT.FLAT | SWT.VERTICAL);
    // Create controls: program args
    Label lblProgramArgs = toolkit.createLabel(composite, "Launcher Arguments:");
    txtProgramArgs = toolkit.createText(composite, "", SWT.MULTI | SWT.BORDER);
    ToolTips.setupMessageAndToolTipFromSyntax(txtProgramArgs, Constants.RUNPROGRAMARGS);
    // Create controls: vm args
    Label lblVmArgs = toolkit.createLabel(composite, "JVM Arguments:");
    txtVmArgs = toolkit.createText(composite, "", SWT.MULTI | SWT.BORDER);
    ToolTips.setupMessageAndToolTipFromSyntax(txtVmArgs, Constants.RUNVM);
    // Layout
    GridLayout gl;
    GridData gd;
    gl = new GridLayout(2, false);
    gl.marginWidth = 0;
    gl.marginHeight = 0;
    composite.setLayout(gl);
    lblRunProperties.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1));
    gd = new GridData(SWT.FILL, SWT.FILL, true, false);
    gd.heightHint = 50;
    gd.widthHint = 50;
    tblRunProperties.setLayoutData(gd);
    gd = new GridData(SWT.FILL, SWT.TOP, false, true);
    createRemovePropsToolBar.setLayoutData(gd);
    lblProgramArgs.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1));
    gd = new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1);
    gd.heightHint = 40;
    gd.widthHint = 50;
    txtProgramArgs.setLayoutData(gd);
    lblVmArgs.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1));
    gd = new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1);
    gd.heightHint = 40;
    gd.widthHint = 50;
    txtVmArgs.setLayoutData(gd);
    // Listeners
    viewRunProperties.addSelectionChangedListener(new ISelectionChangedListener() {

        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            createRemovePropsPart.setRemoveEnabled(!viewRunProperties.getSelection().isEmpty());
        }
    });
    createRemovePropsPart.addListener(new AddRemoveListener() {

        @Override
        public void addSelected() {
            runProperties.put("name", "");
            viewRunProperties.add("name");
            markDirty();
            viewRunProperties.editElement("name", 0);
        }

        @Override
        public void removeSelected() {
            @SuppressWarnings("rawtypes") Iterator iter = ((IStructuredSelection) viewRunProperties.getSelection()).iterator();
            while (iter.hasNext()) {
                Object item = iter.next();
                runProperties.remove(item);
                viewRunProperties.remove(item);
            }
            markDirty();
        }
    });
    runPropertiesModifier.addPropertyChangeListener(new PropertyChangeListener() {

        @Override
        public void propertyChange(PropertyChangeEvent evt) {
            markDirty();
        }
    });
    txtProgramArgs.addModifyListener(new ModifyListener() {

        @Override
        public void modifyText(ModifyEvent ev) {
            lock.ifNotModifying(new Runnable() {

                @Override
                public void run() {
                    markDirty();
                    programArgs = txtProgramArgs.getText();
                    if (programArgs.length() == 0)
                        programArgs = null;
                }
            });
        }
    });
    txtVmArgs.addModifyListener(new ModifyListener() {

        @Override
        public void modifyText(ModifyEvent ev) {
            lock.ifNotModifying(new Runnable() {

                @Override
                public void run() {
                    markDirty();
                    vmArgs = txtVmArgs.getText();
                    if (vmArgs.length() == 0)
                        vmArgs = null;
                }
            });
        }
    });
    composite.addControlListener(new ControlAdapter() {

        @Override
        public void controlResized(ControlEvent e) {
            Rectangle area = composite.getClientArea();
            Point preferredSize = tblRunProperties.computeSize(SWT.DEFAULT, SWT.DEFAULT);
            int width = area.width - 2 * tblRunProperties.getBorderWidth();
            if (preferredSize.y > area.height + tblRunProperties.getHeaderHeight()) {
                // Subtract the scrollbar width from the total column width
                // if a vertical scrollbar will be required
                Point vBarSize = tblRunProperties.getVerticalBar().getSize();
                width -= vBarSize.x;
            }
            Point oldSize = tblRunProperties.getSize();
            if (oldSize.x > area.width) {
                // table is getting smaller so make the columns
                // smaller first and then resize the table to
                // match the client area width
                tblRunPropsCol1.setWidth(width / 3);
                tblRunPropsCol2.setWidth(width - tblRunPropsCol1.getWidth());
                tblRunProperties.setSize(area.width, area.height);
            } else {
                // table is getting bigger so make the table
                // bigger first and then make the columns wider
                // to match the client area width
                tblRunProperties.setSize(area.width, area.height);
                tblRunPropsCol1.setWidth(width / 3);
                tblRunPropsCol2.setWidth(width - tblRunPropsCol1.getWidth());
            }
        }
    });
}
Also used : PropertyChangeListener(java.beans.PropertyChangeListener) ModifyListener(org.eclipse.swt.events.ModifyListener) ControlAdapter(org.eclipse.swt.events.ControlAdapter) Label(org.eclipse.swt.widgets.Label) Rectangle(org.eclipse.swt.graphics.Rectangle) SelectionChangedEvent(org.eclipse.jface.viewers.SelectionChangedEvent) MapContentProvider(bndtools.editor.common.MapContentProvider) Control(org.eclipse.swt.widgets.Control) GridLayout(org.eclipse.swt.layout.GridLayout) ModifyEvent(org.eclipse.swt.events.ModifyEvent) Iterator(java.util.Iterator) PropertyChangeEvent(java.beans.PropertyChangeEvent) Composite(org.eclipse.swt.widgets.Composite) ISelectionChangedListener(org.eclipse.jface.viewers.ISelectionChangedListener) Point(org.eclipse.swt.graphics.Point) TableColumn(org.eclipse.swt.widgets.TableColumn) AddRemoveListener(org.bndtools.utils.swt.AddRemoveButtonBarPart.AddRemoveListener) GridData(org.eclipse.swt.layout.GridData) PropertiesTableLabelProvider(bndtools.editor.common.PropertiesTableLabelProvider) ControlEvent(org.eclipse.swt.events.ControlEvent) TableViewer(org.eclipse.jface.viewers.TableViewer)

Aggregations

MapContentProvider (bndtools.editor.common.MapContentProvider)1 PropertiesTableLabelProvider (bndtools.editor.common.PropertiesTableLabelProvider)1 PropertyChangeEvent (java.beans.PropertyChangeEvent)1 PropertyChangeListener (java.beans.PropertyChangeListener)1 Iterator (java.util.Iterator)1 AddRemoveListener (org.bndtools.utils.swt.AddRemoveButtonBarPart.AddRemoveListener)1 ISelectionChangedListener (org.eclipse.jface.viewers.ISelectionChangedListener)1 SelectionChangedEvent (org.eclipse.jface.viewers.SelectionChangedEvent)1 TableViewer (org.eclipse.jface.viewers.TableViewer)1 ControlAdapter (org.eclipse.swt.events.ControlAdapter)1 ControlEvent (org.eclipse.swt.events.ControlEvent)1 ModifyEvent (org.eclipse.swt.events.ModifyEvent)1 ModifyListener (org.eclipse.swt.events.ModifyListener)1 Point (org.eclipse.swt.graphics.Point)1 Rectangle (org.eclipse.swt.graphics.Rectangle)1 GridData (org.eclipse.swt.layout.GridData)1 GridLayout (org.eclipse.swt.layout.GridLayout)1 Composite (org.eclipse.swt.widgets.Composite)1 Control (org.eclipse.swt.widgets.Control)1 Label (org.eclipse.swt.widgets.Label)1