cn.edu.pku.ogeditor.properties.ObjectsSection.java Source code

Java tutorial

Introduction

Here is the source code for cn.edu.pku.ogeditor.properties.ObjectsSection.java

Source

/*******************************************************************************
 * 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:
?*******************************************************************************/
package cn.edu.pku.ogeditor.properties;

import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CLabel;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.FormAttachment;
import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.views.properties.tabbed.AbstractPropertySection;
import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;

import cn.edu.pku.ogeditor.dialogs.ObjectEditDialog;
import cn.edu.pku.ogeditor.model.ShapesDiagram;
import cn.edu.pku.ogeditor.parts.DiagramEditPart;
import cn.edu.pku.ogeditor.wizards.TableContentProvider;
import cn.edu.pku.ogeditor.wizards.TableLabelProvider;

/**
 * description section in property sheet.
 * @author Xueyuan Xing
 */
public class ObjectsSection extends AbstractPropertySection {

    private static final int LABEL_LENGTH = 200;

    public ObjectsSection() {
        // TODO Auto-generated constructor stub
    }

    private DiagramEditPart dep;
    //   private ObjectsListModel objects;
    private TableViewer viewer;

    public void setInput(IWorkbenchPart part, ISelection selection) {
        super.setInput(part, selection);
        if (!(selection instanceof IStructuredSelection)) {
            return;
        }
        Object input = ((IStructuredSelection) selection).getFirstElement();
        if (input instanceof DiagramEditPart) {
            dep = (DiagramEditPart) input;
        }
    }

    public void createControls(Composite parent, TabbedPropertySheetPage aTabbedPropertySheetPage) {
        super.createControls(parent, aTabbedPropertySheetPage);
        Composite container = getWidgetFactory().createFlatFormComposite(parent);
        FormData data;
        // composite.setLayout(new FillLayout());

        CLabel listLabel = getWidgetFactory().createCLabel(container, "All detectable objects:"); //$NON-NLS-1$

        Table table = new Table(container, SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION | SWT.HIDE_SELECTION);
        TableColumn column1 = new TableColumn(table, SWT.NONE);
        column1.setText("URIs");
        column1.setWidth(400);
        TableColumn column2 = new TableColumn(table, SWT.NONE);
        column2.setWidth(LABEL_LENGTH);
        column2.setText("RFID");
        TableColumn column3 = new TableColumn(table, SWT.NONE);
        column3.setWidth(LABEL_LENGTH);
        column3.setText("TYPE");
        table.setHeaderVisible(true);
        table.setLinesVisible(true);

        viewer = new TableViewer(table);
        viewer.setContentProvider(new TableContentProvider());
        viewer.setLabelProvider(new TableLabelProvider());

        //      objects = new ObjectsListModel();
        //      viewer.setInput(objects);
        //
        //      objects.add(new ObjectInfo("http://object1", "001", "light"));
        //      objects.add(new ObjectInfo("http://object2", "002", "air-conditioning"));
        //      objects.add(new ObjectInfo("http://object3", "003", "screen"));

        Button button = getWidgetFactory().createButton(container, "Edit", SWT.PUSH);

        data = new FormData();
        data.left = new FormAttachment(0);
        data.right = new FormAttachment(100);
        data.top = new FormAttachment(0);
        listLabel.setLayoutData(data);

        data = new FormData();
        data.left = new FormAttachment(listLabel, 0, SWT.LEFT);
        data.right = new FormAttachment(90);
        data.top = new FormAttachment(listLabel, 0, SWT.BOTTOM);
        data.bottom = new FormAttachment(listLabel, 180, SWT.BOTTOM);

        table.setLayoutData(data);

        data = new FormData();
        data.left = new FormAttachment(table);
        data.right = new FormAttachment(100);
        data.top = new FormAttachment(table, 0, SWT.TOP);
        button.setLayoutData(data);
        button.addSelectionListener(new ButtonListener());
    }

    public void refresh() {
        ShapesDiagram diagram = (ShapesDiagram) dep.getModel();
        viewer.setInput(diagram.getObjects());
    }

    private class ButtonListener extends SelectionAdapter {

        @Override
        public void widgetSelected(SelectionEvent e) {
            //         if (isSep)
            //            sep.getCastedModel().setDescription(descriptionText.getText());
            //         else
            //            cep.getCastedModel().setDescription(descriptionText.getText());
            //         ShapesEditor.myselfShapesEditor.doSave(null);
            //         ShapesEditor.myselfShapesEditor.setDirty(false);
            ObjectEditDialog dialog = new ObjectEditDialog(Display.getDefault().getActiveShell(),
                    ((ShapesDiagram) dep.getModel()).getObjects(), viewer);
            dialog.open();
            //         viewer.refresh();
            //         if(dialog.open() != ObjectEditDialog.OK)
            //            return;
        }
    }
}