Example usage for org.eclipse.jface.viewers IDoubleClickListener IDoubleClickListener

List of usage examples for org.eclipse.jface.viewers IDoubleClickListener IDoubleClickListener

Introduction

In this page you can find the example usage for org.eclipse.jface.viewers IDoubleClickListener IDoubleClickListener.

Prototype

IDoubleClickListener

Source Link

Usage

From source file:$packageName$.$className$.java

License:Open Source License

private void hookDoubleClickAction() {
        viewer.addDoubleClickListener(new IDoubleClickListener() {
            public void doubleClick(DoubleClickEvent event) {
                doubleClickAction.run();
            }/*from   www  .  j a v  a  2 s.  c om*/
        });
    }

From source file:alma.acs.eventbrowser.parts.ChannelTreePart.java

License:Open Source License

/**
 * See http://www.vogella.com/articles/EclipseJFaceTree/article.html
 */// w w w  .  j  av  a2s.  c  o m
@PostConstruct
public void postConstruct(Composite parent, final IEclipseContext context, EMenuService menuService,
        IEventBroker eventBroker) {
    try {
        eventModel = EventModel.getInstance();
    } catch (Throwable thr) {
        thr.printStackTrace();
        IStatus someStatus = statusReporter.newStatus(IStatus.ERROR, "Connection with NCs failed.", thr);
        statusReporter.report(someStatus, StatusReporter.SHOW);
        throw new RuntimeException(thr);
    }
    //      eventModel.getLogger().info("ChannelTreePart got EventModel instance.");

    statusLineWriter = new StatusLineWriter(eventBroker);

    viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
    viewer.setContentProvider(new ChannelTreeContentProvider());
    viewer.setLabelProvider(new ChannelTreeLabelProvider());
    // Expand the tree. '2' means to show only the visible top-level nodes.
    viewer.setAutoExpandLevel(2);

    viewer.setComparator(new ServiceViewerComparator());

    // Provide the root node to the ContentProvider
    viewer.setInput(eventModel.getNotifyServicesRoot());

    // Expand with doubleclick
    viewer.addDoubleClickListener(new IDoubleClickListener() {
        @Override
        public void doubleClick(DoubleClickEvent event) {
            IStructuredSelection thisSelection = (IStructuredSelection) event.getSelection();
            Object selectedNode = thisSelection.getFirstElement();
            viewer.setExpandedState(selectedNode, !viewer.getExpandedState(selectedNode));
        }
    });

    // Attach a selection listener to our tree that will post selections to the ESelectionService
    viewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            IStructuredSelection selection = (IStructuredSelection) event.getSelection();
            selectionService
                    .setSelection(selection.size() == 1 ? selection.getFirstElement() : selection.toArray());
        }
    });

    // TODO: Take care of help system. Here's the E3 code:
    //      // Create the help context id for the viewer's control
    //      PlatformUI.getWorkbench().getHelpSystem().setHelp(viewer.getControl(), "alma.acs.eventbrowser.viewer");

    hookContextMenu(menuService);

    // TODO: this could be used by handlers etc, currently it's not
    context.set(ChannelTreePart.class, this);
}

From source file:amltransformation.dialogs.SetElementTransformableDialog.java

License:Open Source License

@Override
protected Control createDialogArea(Composite parent) {
    Control area = super.createDialogArea(parent);

    parent.setLayout(GridLayoutFactory.fillDefaults().margins(5, 5).numColumns(1).create());
    parent.setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create());

    TransformableTreeComposite transformableComposite = new TransformableTreeComposite(parent, SWT.NONE);
    transformableComposite.setInput(transformables);
    transformableComposite.getTreeViewer().addSelectionChangedListener(new ISelectionChangedListener() {

        @Override/*from w w w .  jav a 2s .c o m*/
        public void selectionChanged(SelectionChangedEvent event) {
            selectedTransformable = ((TreeSelection) event.getSelection()).getFirstElement();
            getOkButton().setEnabled(selectedTransformable != null);
        }
    });

    transformableComposite.getTreeViewer().addDoubleClickListener(new IDoubleClickListener() {

        @Override
        public void doubleClick(DoubleClickEvent event) {
            if (selectedTransformable instanceof Class<?>) {
                okPressed();
            }
        }
    });
    return area;
}

From source file:amltransformation.dialogs.SetTransformableDialog.java

License:Open Source License

@Override
protected Control createDialogArea(Composite parent) {
    parent.setLayout(GridLayoutFactory.fillDefaults().margins(5, 5).numColumns(1).create());
    parent.setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create());

    TransformableTreeComposite transformableComposite = new TransformableTreeComposite(parent, SWT.NONE);
    transformableComposite.setInput(transformables);
    transformableComposite.getTreeViewer().addSelectionChangedListener(new ISelectionChangedListener() {

        @Override//from  ww w .  j  ava 2  s.  c o m
        public void selectionChanged(SelectionChangedEvent event) {
            selectedTransformable = ((TreeSelection) event.getSelection()).getFirstElement();
            if (selectedTransformable instanceof Class<?>) {
                getOkButton().setEnabled(true);
            } else {
                getOkButton().setEnabled(false);
            }
        }
    });

    transformableComposite.getTreeViewer().addDoubleClickListener(new IDoubleClickListener() {

        @Override
        public void doubleClick(DoubleClickEvent event) {
            if (selectedTransformable instanceof Class<?>) {
                okPressed();
            }

        }
    });

    return super.createDialogArea(parent);
}

From source file:ar.com.tadp.xml.rinzo.core.outline.XMLOutlinePage.java

License:Open Source License

protected void initListeners(TreeViewer viewer) {
    viewer.addDoubleClickListener(new IDoubleClickListener() {
        public void doubleClick(DoubleClickEvent event) {
            handleDoubleClick(event);//w ww  . jav  a 2s. co  m
        }
    });
}

From source file:aspectminingtool.views.FanInSeeds.ViewPartFanInSeeds.java

License:Open Source License

/**
 * Create the Methods TableViewer/*from www  .j av a2s .  c  om*/
 */
private void createMethodsTableViewer() {

    tableViewerLeft = new TableViewer(tableLeft);
    tableViewerLeft.setUseHashlookup(true);

    tableViewerLeft.setColumnProperties(columnNamesMethodsTable);

    // Set the sorter
    ViewerSorter sorter = new SorterMethodDescriptionView();
    tableViewerLeft.setSorter(sorter);
    // Create the cell editors
    CellEditor[] editors = new CellEditor[columnNamesMethodsTable.length];
    // Column 1 :
    editors[0] = null;
    // Column 2 : Description (Free text)
    TextCellEditor textEditor = new TextCellEditor(tableLeft);
    editors[1] = textEditor;

    // Assign the cell editors to the viewer
    tableViewerLeft.setCellEditors(editors);
    // Set the cell modifier for the viewer
    tableViewerLeft.setCellModifier(new CellModifierMethodsDescription(this));

    tableViewerLeft.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            selectionItem(event);

        }

    });

    tableViewerLeft.addDoubleClickListener(new IDoubleClickListener() {

        @Override
        public void doubleClick(DoubleClickEvent event) {
            if (!event.getSelection().isEmpty()) {

                if (event.getSelection() instanceof IStructuredSelection) {

                    MethodDescription methodDescription = (MethodDescription) ((IStructuredSelection) event
                            .getSelection()).getFirstElement();
                    openResource(methodDescription.getMethod().getClass_id());
                }
            }

        }

    });

    // Set the default sorter for the viewer
    // tableViewerMethod.setSorter(new
    // ExampleTaskSorter(ExampleTaskSorter.DESCRIPTION));
}

From source file:at.medevit.elexis.inbox.ui.part.InboxView.java

License:Open Source License

@Override
public void createPartControl(Composite parent) {
    Composite composite = new Composite(parent, SWT.NONE);
    composite.setLayout(new GridLayout(1, false));

    Composite filterComposite = new Composite(composite, SWT.NONE);
    GridData data = new GridData(GridData.FILL_HORIZONTAL);
    filterComposite.setLayoutData(data);
    filterComposite.setLayout(new GridLayout(2, false));

    filterText = new Text(filterComposite, SWT.SEARCH);
    filterText.setMessage("Filter");
    data = new GridData(GridData.FILL_HORIZONTAL);
    filterText.setLayoutData(data);/*  w w  w .j a  v  a 2s . co  m*/
    filterText.addModifyListener(new ModifyListener() {
        public void modifyText(ModifyEvent e) {
            if (filterText.getText().length() > 1) {
                filter.setSearchText(filterText.getText());
                viewer.refresh();
            } else {
                filter.setSearchText("");
                viewer.refresh();
            }
        }
    });

    ToolBarManager menuManager = new ToolBarManager(SWT.FLAT | SWT.HORIZONTAL | SWT.WRAP);
    menuManager.createControl(filterComposite);

    viewer = new CheckboxTreeViewer(composite, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
    GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1);
    viewer.getControl().setLayoutData(gd);

    ViewerFilter[] filters = new ViewerFilter[1];
    filters[0] = filter;
    viewer.setFilters(filters);

    contentProvider = new InboxElementContentProvider();
    viewer.setContentProvider(contentProvider);

    viewer.setLabelProvider(new InboxElementLabelProvider());

    viewer.addCheckStateListener(new ICheckStateListener() {

        public void checkStateChanged(CheckStateChangedEvent event) {
            if (event.getElement() instanceof PatientInboxElements) {
                PatientInboxElements patientInbox = (PatientInboxElements) event.getElement();
                for (InboxElement inboxElement : patientInbox.getElements()) {
                    if (!filter.isActive() || filter.isSelect(inboxElement)) {
                        State newState = toggleInboxElementState(inboxElement);
                        if (newState == State.NEW) {
                            viewer.setChecked(inboxElement, false);
                        } else {
                            viewer.setChecked(inboxElement, true);
                        }
                        contentProvider.refreshElement(inboxElement);
                    }
                }
                contentProvider.refreshElement(patientInbox);
            } else if (event.getElement() instanceof InboxElement) {
                InboxElement inboxElement = (InboxElement) event.getElement();
                if (!filter.isActive() || filter.isSelect(inboxElement)) {
                    toggleInboxElementState(inboxElement);
                    contentProvider.refreshElement(inboxElement);
                }
            }
            viewer.refresh(false);
        }
    });

    viewer.addDoubleClickListener(new IDoubleClickListener() {
        @Override
        public void doubleClick(DoubleClickEvent event) {
            StructuredSelection selection = (StructuredSelection) viewer.getSelection();
            if (!selection.isEmpty()) {
                Object selectedObj = selection.getFirstElement();
                if (selectedObj instanceof InboxElement) {
                    InboxElementUiExtension extension = new InboxElementUiExtension();
                    extension.fireDoubleClicked((InboxElement) selectedObj);
                }
            }
        }
    });

    viewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            ISelection selection = event.getSelection();
            if (selection instanceof StructuredSelection && !selection.isEmpty()) {
                if (setAutoSelectPatient) {
                    Object selectedElement = ((StructuredSelection) selection).getFirstElement();
                    if (selectedElement instanceof InboxElement) {
                        ElexisEventDispatcher.fireSelectionEvent(((InboxElement) selectedElement).getPatient());
                    } else if (selectedElement instanceof PatientInboxElements) {
                        ElexisEventDispatcher
                                .fireSelectionEvent(((PatientInboxElements) selectedElement).getPatient());
                    }
                }
            }
        }
    });

    final Transfer[] dropTransferTypes = new Transfer[] { FileTransfer.getInstance() };
    viewer.addDropSupport(DND.DROP_COPY, dropTransferTypes, new DropTargetAdapter() {

        @Override
        public void dragEnter(DropTargetEvent event) {
            event.detail = DND.DROP_COPY;
        }

        @Override
        public void drop(DropTargetEvent event) {
            if (dropTransferTypes[0].isSupportedType(event.currentDataType)) {
                String[] files = (String[]) event.data;
                Patient patient = null;

                if (event.item != null) {
                    Object data = event.item.getData();
                    if (data instanceof InboxElement) {
                        patient = ((InboxElement) data).getPatient();
                    } else if (data instanceof PatientInboxElements) {
                        patient = ((PatientInboxElements) data).getPatient();
                    }
                }

                if (patient == null) {
                    // fallback
                    patient = ElexisEventDispatcher.getSelectedPatient();
                }
                if (patient != null) {
                    if (files != null) {
                        for (String file : files) {
                            try {
                                InboxServiceComponent.getService().createInboxElement(patient,
                                        ElexisEventDispatcher.getSelectedMandator(), file, true);
                            } catch (Exception e) {
                                LoggerFactory.getLogger(InboxView.class).warn("drop error", e);
                            }
                        }
                    }

                    viewer.refresh();
                } else {
                    MessageDialog.openWarning(Display.getCurrent().getActiveShell(), "Warnung",
                            "Bitte whlen Sie zuerst einen Patienten aus.");
                }

            }
        }

    });

    addFilterActions(menuManager);

    InboxServiceComponent.getService().addUpdateListener(new IInboxUpdateListener() {
        public void update(final InboxElement element) {
            Display.getDefault().asyncExec(new Runnable() {
                public void run() {
                    contentProvider.refreshElement(element);
                    viewer.refresh();
                }
            });
        }
    });

    reload();

    MenuManager ctxtMenuManager = new MenuManager();
    Menu menu = ctxtMenuManager.createContextMenu(viewer.getTree());
    viewer.getTree().setMenu(menu);
    getSite().registerContextMenu(ctxtMenuManager, viewer);

    ElexisEventDispatcher.getInstance().addListeners(mandantChanged);
    getSite().setSelectionProvider(viewer);

    setAutoSelectPatientState(CoreHub.userCfg.get(Preferences.INBOX_PATIENT_AUTOSELECT, false));
}

From source file:at.rc.tacos.client.view.admin.AddressAdminView.java

License:Open Source License

/**
 * This is a callback that will allow us to create the viewer and initialize
 * it.//ww  w .  j a va  2 s .com
 */
@Override
public void createPartControl(final Composite parent) {
    String authorization = SessionManager.getInstance().getLoginInformation().getAuthorization();

    // the scrolled form
    toolkit = new FormToolkit(CustomColors.FORM_COLOR(parent.getDisplay()));
    form = toolkit.createScrolledForm(parent);
    form.setText("Liste der Adressen");

    if (!authorization.equalsIgnoreCase("Administrator"))
        form.setEnabled(false);
    toolkit.decorateFormHeading(form.getForm());
    GridLayout layout = new GridLayout();
    layout.horizontalSpacing = 0;
    layout.verticalSpacing = 0;
    layout.marginHeight = 0;
    layout.marginWidth = 0;
    form.getBody().setLayout(layout);
    form.getBody().setLayoutData(new GridData(GridData.FILL_BOTH));

    // create the section to hold the filter
    Composite filter = createSection(form.getBody(), "Filter");

    // create the input fields
    final Label labelStreet = toolkit.createLabel(filter, "Strae");
    street = toolkit.createText(filter, "");
    street.addModifyListener(new ModifyListener() {

        public void modifyText(final ModifyEvent e) {
            inputChanged();
        }
    });

    // the city
    final Label labelCity = toolkit.createLabel(filter, "Stadt");
    city = toolkit.createText(filter, "");
    city.addModifyListener(new ModifyListener() {

        public void modifyText(final ModifyEvent e) {
            inputChanged();
        }
    });

    // the zip code
    final Label labelZip = toolkit.createLabel(filter, "GKZ");
    zip = toolkit.createText(filter, "");
    zip.addModifyListener(new ModifyListener() {

        public void modifyText(final ModifyEvent e) {
            inputChanged();
        }
    });

    // create the info label
    infoLabel = new CLabel(filter, SWT.NONE);
    infoLabel.setText("Bitte geben sie mindestens ein Zeichen ein um die Daten vom Server abzurufen");
    infoLabel.setImage(ImageFactory.getInstance().getRegisteredImage("resource.info"));

    // create the section to hold the table
    Composite tableComp = createSection(form.getBody(), "Filter");
    Table table = new Table(tableComp, SWT.SINGLE | SWT.BORDER | SWT.FULL_SELECTION);
    viewer = new TableViewer(table);
    viewer.setUseHashlookup(true);
    viewer.getTable().setLayout(new GridLayout());
    viewer.getTable().setLayoutData(new GridData(GridData.FILL_BOTH));
    viewer.addDoubleClickListener(new IDoubleClickListener() {

        @Override
        public void doubleClick(DoubleClickEvent dce) {
            // get the selected disease
            ISelection selection = viewer.getSelection();
            Object obj = ((IStructuredSelection) selection).getFirstElement();
            Address address = (Address) obj;
            // create the editor input and open
            AddressEditorInput input = new AddressEditorInput(address, false);
            IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
            try {
                page.openEditor(input, AddressEditor.ID);
            } catch (PartInitException e) {
                Activator.getDefault().log("Failed to open the editor for the address " + address,
                        IStatus.ERROR);
            }
        }
    });
    viewer.setContentProvider(new AddressContentProvider());
    viewer.setLabelProvider(new AddressLabelProvider());
    viewer.setInput(ModelFactory.getInstance().getAddressManager().toArray());
    viewer.getTable().setLinesVisible(true);
    viewer.getTable().setHeaderVisible(true);
    getViewSite().setSelectionProvider(viewer);

    // create the columns
    final TableColumn imageColumn = new TableColumn(table, SWT.NONE);
    imageColumn.setToolTipText("");
    imageColumn.setWidth(30);
    imageColumn.setText("");

    final TableColumn zipColumn = new TableColumn(table, SWT.NONE);
    zipColumn.setToolTipText("Gemeindekennzeichen");
    zipColumn.setWidth(60);
    zipColumn.setText("GKZ");

    final TableColumn cityColumn = new TableColumn(table, SWT.NONE);
    cityColumn.setToolTipText("Name der Stadt");
    cityColumn.setWidth(180);
    cityColumn.setText("Stadt");

    final TableColumn streetColumn = new TableColumn(table, SWT.NONE);
    streetColumn.setToolTipText("Name der Strae");
    streetColumn.setWidth(180);
    streetColumn.setText("Strae");

    // make the columns sortable
    Listener sortListener = new Listener() {

        public void handleEvent(Event e) {
            // determine new sort column and direction
            TableColumn sortColumn = viewer.getTable().getSortColumn();
            TableColumn currentColumn = (TableColumn) e.widget;
            int dir = viewer.getTable().getSortDirection();
            // revert the sortorder if the column is the same
            if (sortColumn == currentColumn) {
                if (dir == SWT.UP)
                    dir = SWT.DOWN;
                else
                    dir = SWT.UP;
            } else {
                viewer.getTable().setSortColumn(currentColumn);
                dir = SWT.UP;
            }
            // sort the data based on column and direction
            String sortIdentifier = null;
            if (currentColumn == zipColumn)
                sortIdentifier = AddressViewSorter.ZIP_SORTER;
            if (currentColumn == cityColumn)
                sortIdentifier = AddressViewSorter.CITY_SORTER;
            if (currentColumn == streetColumn)
                sortIdentifier = AddressViewSorter.STREET_SORTER;
            // apply the filter
            viewer.getTable().setSortDirection(dir);
            viewer.setSorter(new AddressViewSorter(sortIdentifier, dir));
        }
    };

    // attach the listener
    zipColumn.addListener(SWT.Selection, sortListener);
    cityColumn.addListener(SWT.Selection, sortListener);
    streetColumn.addListener(SWT.Selection, sortListener);

    // add actions to the toolbar
    createToolBarActions();

    // set this table as a selection provider
    getViewSite().setSelectionProvider(viewer);

    // set the layout for the composites
    GridData data = new GridData();
    data.widthHint = 80;
    labelStreet.setLayoutData(data);
    data = new GridData();
    data.widthHint = 80;
    labelCity.setLayoutData(data);
    data.widthHint = 80;
    labelZip.setLayoutData(data);
    labelCity.setLayoutData(data);
    data.widthHint = 80;
    // layout for the text fields
    GridData data2 = new GridData(GridData.FILL_HORIZONTAL);
    street.setLayoutData(data2);
    data2 = new GridData(GridData.FILL_HORIZONTAL);
    city.setLayoutData(data2);
    data2 = new GridData(GridData.FILL_HORIZONTAL);
    zip.setLayoutData(data2);
    data2 = new GridData(GridData.FILL_BOTH);
    viewer.getTable().setLayoutData(data2);
    // the section of the table
    data2 = new GridData(GridData.FILL_BOTH);
    Section tableSection = (Section) tableComp.getParent();
    tableSection.setLayoutData(data2);
    // the info label
    data2 = new GridData(GridData.FILL_BOTH);
    data2.horizontalSpan = 2;
    infoLabel.setLayoutData(data2);

    // reflow
    form.reflow(true);
}

From source file:at.rc.tacos.client.view.admin.CompetenceAdminView.java

License:Open Source License

/**
 * This is a callback that will allow us to create the viewer and initialize
 * it.// w  w  w .j a va2  s  .co  m
 */
@Override
public void createPartControl(final Composite parent) {
    String authorization = SessionManager.getInstance().getLoginInformation().getAuthorization();
    // the scrolled form
    toolkit = new FormToolkit(CustomColors.FORM_COLOR(parent.getDisplay()));
    form = toolkit.createScrolledForm(parent);
    form.setText("Liste der Kompetenzen");
    if (!authorization.equalsIgnoreCase("Administrator"))
        form.setEnabled(false);
    toolkit.decorateFormHeading(form.getForm());
    GridLayout layout = new GridLayout();
    layout.horizontalSpacing = 0;
    layout.verticalSpacing = 0;
    layout.marginHeight = 0;
    layout.marginWidth = 0;
    form.getBody().setLayout(layout);
    form.getBody().setLayoutData(new GridData(GridData.FILL_BOTH));

    viewer = new TableViewer(form.getBody(), SWT.SINGLE | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
    viewer.getTable().setLayout(new GridLayout());
    viewer.getTable().setLayoutData(new GridData(GridData.FILL_BOTH));
    viewer.addDoubleClickListener(new IDoubleClickListener() {

        @Override
        public void doubleClick(DoubleClickEvent dce) {
            // get the selected competence
            ISelection selection = viewer.getSelection();
            Object obj = ((IStructuredSelection) selection).getFirstElement();
            Competence competence = (Competence) obj;
            // create the editor input and open
            CompetenceEditorInput input = new CompetenceEditorInput(competence, false);
            IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
            try {
                page.openEditor(input, CompetenceEditor.ID);
            } catch (PartInitException e) {
                Activator.getDefault().log("Failed to open the editor for the competence " + competence,
                        IStatus.ERROR);
            }
        }
    });
    viewer.setContentProvider(new CompetenceContentProvider());
    viewer.setLabelProvider(new CompetenceLabelProvider());
    viewer.setInput(ModelFactory.getInstance().getCompetenceManager().toArray());
    getViewSite().setSelectionProvider(viewer);

    // add actions to the toolbar
    createToolBarActions();

    // set this table as a selection provider
    getViewSite().setSelectionProvider(viewer);
}

From source file:at.rc.tacos.client.view.admin.DiseaseAdminView.java

License:Open Source License

/**
 * This is a callback that will allow us to create the viewer and initialize
 * it./*from www .  j a  v a 2 s .co m*/
 */
@Override
public void createPartControl(final Composite parent) {
    String authorization = SessionManager.getInstance().getLoginInformation().getAuthorization();
    // the scrolled form
    toolkit = new FormToolkit(CustomColors.FORM_COLOR(parent.getDisplay()));
    form = toolkit.createScrolledForm(parent);
    form.setText("Liste der Erkrankungen");
    if (!authorization.equalsIgnoreCase("Administrator"))
        form.setEnabled(false);
    toolkit.decorateFormHeading(form.getForm());
    GridLayout layout = new GridLayout();
    layout.horizontalSpacing = 0;
    layout.verticalSpacing = 0;
    layout.marginHeight = 0;
    layout.marginWidth = 0;
    form.getBody().setLayout(layout);
    form.getBody().setLayoutData(new GridData(GridData.FILL_BOTH));

    viewer = new TableViewer(form.getBody(), SWT.SINGLE | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
    viewer.getTable().setLayout(new GridLayout());
    viewer.getTable().setLayoutData(new GridData(GridData.FILL_BOTH));
    viewer.addDoubleClickListener(new IDoubleClickListener() {

        @Override
        public void doubleClick(DoubleClickEvent dce) {
            // get the selected disease
            ISelection selection = viewer.getSelection();
            Object obj = ((IStructuredSelection) selection).getFirstElement();
            Disease disease = (Disease) obj;
            // create the editor input and open
            DiseaseEditorInput input = new DiseaseEditorInput(disease, false);
            IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
            try {
                page.openEditor(input, DiseaseEditor.ID);
            } catch (PartInitException e) {
                Activator.getDefault().log("Failed to open the editor for the disease " + disease,
                        IStatus.ERROR);
            }
        }
    });
    viewer.setContentProvider(new DiseaseContentProvider());
    viewer.setLabelProvider(new DiseaseLabelProvider());
    viewer.setInput(ModelFactory.getInstance().getDiseaseManager());
    getViewSite().setSelectionProvider(viewer);

    // add actions to the toolbar
    createToolBarActions();

    // set this table as a selection provider
    getViewSite().setSelectionProvider(viewer);
}