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

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

Introduction

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

Prototype

public LabelProvider() 

Source Link

Document

Creates a new label provider.

Usage

From source file:com.axmor.eclipse.typescript.debug.ui.launching.LaunchStandaloneMainTab.java

License:Open Source License

/**
 * Creates project selection editor group.
 * //  w  w  w.  j  ava  2  s.c o m
 * @param parent
 *            parent control
 */
private void createProjectEditor(Composite parent) {
    Group group = SWTFactory.createGroup(parent, "Project:", 2, 1, GridData.FILL_HORIZONTAL);
    projectTxt = SWTFactory.createSingleText(group, 1);
    projectTxt.addModifyListener(new ModifyListener() {
        @Override
        public void modifyText(ModifyEvent e) {
            fileTxt.setEnabled(!projectTxt.getText().trim().isEmpty());
            fileBtn.setEnabled(!projectTxt.getText().trim().isEmpty());
            updateLaunchConfigurationDialog();
        }
    });
    projectBtn = createPushButton(group, "Browse...", null);
    projectBtn.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            ElementListSelectionDialog dialog = new ElementListSelectionDialog(getShell(), new LabelProvider() {
                public Image getImage(Object element) {
                    return PlatformUI.getWorkbench().getSharedImages()
                            .getImage(IDE.SharedImages.IMG_OBJ_PROJECT);
                }

                public String getText(Object element) {
                    return ((IProject) element).getName();
                }
            });
            dialog.setTitle("Project Selection");
            dialog.setMessage("Select a TypeScript project");
            List<IProject> projects = new ArrayList<>();
            for (IProject project : ResourcesPlugin.getWorkspace().getRoot().getProjects()) {
                try {
                    if (project.hasNature(TypescriptNature.NATURE_ID)) {
                        projects.add(project);
                    }
                } catch (CoreException ex) {
                    // ignore exception
                }
            }
            dialog.setElements((IProject[]) projects.toArray(new IProject[projects.size()]));
            if (dialog.open() == Window.OK) {
                projectTxt.setText(((IProject) dialog.getFirstResult()).getName());
            }
        }
    });
}

From source file:com.baremetalstudios.mapleide.internal.ResourceNavigator.java

License:Open Source License

@Inject
public ResourceNavigator(Composite parent, final IEclipseContext context, IWorkspace workspace) {
    final Realm realm = SWTObservables.getRealm(parent.getDisplay());
    this.context = context;
    parent.setLayout(new FillLayout());
    TreeViewer viewer = new TreeViewer(parent, SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL);
    viewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            StructuredSelection selection = (StructuredSelection) event.getSelection();
            selectionService/*  w ww.j  av a  2s  .c  om*/
                    .setSelection(selection.size() == 1 ? selection.getFirstElement() : selection.toArray());
            //            context.modify(IServiceConstants.ACTIVE_SELECTION, selection.size() == 1 ? selection.getFirstElement() : selection.toArray());
        }
    });

    IObservableFactory setFactory = new IObservableFactory() {
        public IObservable createObservable(Object element) {
            if (element instanceof IContainer && ((IContainer) element).exists()) {
                IObservableSet observableSet = observableSets.get(element);
                if (observableSet == null) {
                    observableSet = new WritableSet(realm);
                    try {
                        observableSet.addAll(Arrays.asList(((IContainer) element).members()));
                    } catch (CoreException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    observableSets.put((IContainer) element, observableSet);
                }
                return observableSet;
            }
            return Observables.emptyObservableSet();
        }
    };
    viewer.setContentProvider(new ObservableSetTreeContentProvider(setFactory, new TreeStructureAdvisor() {
        public Boolean hasChildren(Object element) {
            return Boolean.valueOf(element instanceof IContainer);
        }
    }));

    viewer.setLabelProvider(new LabelProvider() {
        public String getText(Object element) {
            if (element instanceof IResource)
                return ((IResource) element).getName();
            return element == null ? "" : element.toString();
        }
    });
    viewer.setSorter(new ViewerSorter());
    viewer.setInput(workspace.getRoot());
    viewer.addOpenListener(new IOpenListener() {

        public void open(OpenEvent event) {

            MapleIDEApplication app = (MapleIDEApplication) application;
            IStructuredSelection s = (IStructuredSelection) event.getSelection();
            for (Object o : s.toArray()) {
                if (o instanceof IFile) {
                    IFile f = (IFile) o;
                    context.set(IFile.class, f);
                    String fExt = f.getFileExtension();
                    EDITOR: for (EditorPartDescriptor desc : app.getEditorPartDescriptors()) {
                        for (String ext : desc.getFileextensions()) {
                            if (ext.equals(fExt)) {
                                context.set(EditorPartDescriptor.class, desc);
                                System.err.println("Opening with: " + desc);

                                Command cmd = commandService
                                        .getCommand("com.baremetalstudios.mapleide.command.openeditor");
                                //                           Command cmd = commandService.getCommand("simpleide.command.openeditor");
                                ParameterizedCommand pCmd = ParameterizedCommand.generateCommand(cmd, null);
                                handlerService.executeHandler(pCmd);

                                break EDITOR;
                            }
                        }
                    }
                }
            }

        }
    });
    setupContextMenu(viewer, parent.getShell());
    workspace.addResourceChangeListener(listener);
}

From source file:com.baremetalstudios.mapleide.ui.ResourceViewerControl.java

License:Open Source License

public ResourceViewerControl(Composite parent, int style, IWorkspace workspace, IResource resource) {
    super(parent, style);
    setLayout(new FillLayout());

    viewer = new TreeViewer(this);
    viewer.setContentProvider(new ResourceContentProviderImpl());
    viewer.setLabelProvider(new LabelProvider() {
        public String getText(Object element) {
            if (element instanceof IResource)
                return ((IResource) element).getName();
            return element == null ? "" : element.toString();
        }//w w  w  .  j a  v a 2s.  c o m
    });
    viewer.setSorter(new ViewerSorter());
    viewer.setInput(workspace.getRoot());

    if (resource != null) {
        IContainer resContainer;
        if (resource instanceof IContainer) {
            resContainer = (IContainer) resource;
        } else {
            resContainer = resource.getParent();
        }

        if (resContainer != null) {
            List<IContainer> path = new ArrayList<IContainer>();
            path.add(resContainer);
            while ((resContainer = resContainer.getParent()) != null) {
                path.add(resContainer);
            }
            Collections.reverse(path);
            path.remove(0);
            viewer.setSelection(new TreeSelection(new TreePath(path.toArray())));
        }
    }
}

From source file:com.bdaum.zoom.ai.clarifai.internal.preference.PagePart.java

License:Open Source License

@SuppressWarnings("unused")
@Override//w w w. ja  v a  2  s .c  o m
public Control createPageContents(Composite parent, AbstractPreferencePage parentPage) {
    this.parentPage = (AiPreferencePage) parentPage;
    Composite composite = new Composite(parent, SWT.NONE);
    composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    composite.setLayout(new GridLayout(1, false));
    ((GridLayout) composite.getLayout()).verticalSpacing = 0;
    new Label(composite, SWT.NONE).setText(Messages.PagePart_manage_clarifai_account);
    new Label(composite, SWT.NONE);
    CGroup eGroup = UiUtilities.createGroup(composite, 2, Messages.PagePart_credentials);
    new Label(eGroup, SWT.NONE).setText(Messages.PagePart_client_id);
    clientIdField = new Text(eGroup, SWT.SINGLE | SWT.LEAD | SWT.BORDER);
    clientIdField.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
    new Label(eGroup, SWT.NONE).setText(Messages.PagePart_secret);
    clientSecretField = new Text(eGroup, SWT.SINGLE | SWT.LEAD | SWT.BORDER);
    clientSecretField.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
    clientIdField.addModifyListener(this);
    clientSecretField.addModifyListener(this);
    new Label(eGroup, SWT.NONE).setText(Messages.PagePart_access_token);
    statusField = new Label(eGroup, SWT.NONE);
    statusField.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
    CLink link = new CLink(eGroup, SWT.NONE);
    link.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
    link.setText(Messages.PagePart_visit_account_page);
    link.addListener(new Listener() {
        @Override
        public void handleEvent(Event event) {
            String vlcDownload = System.getProperty("com.bdaum.zoom.clarifai"); //$NON-NLS-1$
            try {
                PlatformUI.getWorkbench().getBrowserSupport().getExternalBrowser()
                        .openURL(new URL(vlcDownload));
            } catch (PartInitException e1) {
                // do nothing
            } catch (MalformedURLException e1) {
                // should never happen
            }
        }
    });
    CGroup tGroup = CGroup.create(composite, 1, Messages.PagePart_limits);
    new Label(tGroup, SWT.NONE).setText(Messages.PagePart_model);
    modelCombo = new ComboViewer(tGroup, SWT.READ_ONLY);
    modelCombo.getControl().setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
    modelCombo.setContentProvider(ArrayContentProvider.getInstance());
    modelCombo.setLabelProvider(new LabelProvider());
    modelCombo.setComparator(ZViewerComparator.INSTANCE);
    modelCombo.setInput(CoreActivator.getDefault().getThemes().values());
    ISelectionChangedListener listener = new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            if (!updating)
                updateButtons();
        }
    };
    modelCombo.addSelectionChangedListener(listener);
    new Label(tGroup, SWT.NONE).setText(Messages.PagePart_language);
    languageCombo = new ComboViewer(tGroup, SWT.READ_ONLY);
    languageCombo.getControl().setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
    languageCombo.setContentProvider(ArrayContentProvider.getInstance());
    languageCombo.setLabelProvider(new LabelProvider() {
        @Override
        public String getText(Object element) {
            if (element instanceof String) {
                Locale loc = new Locale((String) element);
                return loc.getDisplayLanguage(loc);
            }
            return super.getText(element);
        }
    });
    languageCombo.addSelectionChangedListener(listener);
    languageCombo.setInput(ClarifaiActivator.LANGUAGES);
    new Label(tGroup, SWT.NONE).setText(Messages.PagePart_max_concepts);
    conceptField = new NumericControl(tGroup, SWT.BORDER);
    conceptField.setLayoutData(new GridData(SWT.END, SWT.CENTER, true, false));
    conceptField.setMaximum(20);
    conceptField.setMinimum(1);
    new Label(tGroup, SWT.NONE).setText(Messages.PagePart_min_confidence);
    confidenceField = new NumericControl(tGroup, SWT.BORDER);
    confidenceField.setLayoutData(new GridData(SWT.END, SWT.CENTER, true, false));
    confidenceField.setMaximum(99);
    confidenceField.setMinimum(0);
    new Label(tGroup, SWT.NONE).setText(Messages.PagePart_mark_above);
    aboveField = new NumericControl(tGroup, SWT.BORDER);
    aboveField.setLayoutData(new GridData(SWT.END, SWT.CENTER, true, false));
    aboveField.setMaximum(100);
    aboveField.setMinimum(0);
    knownButton = WidgetFactory.createCheckButton(tGroup, Messages.PagePart_mark_known,
            new GridData(SWT.END, SWT.CENTER, false, false, 2, 1), Messages.PagePart_mark_known_tooltip);
    Composite buttonArea1 = new Composite(tGroup, SWT.NONE);
    buttonArea1.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 2, 1));
    buttonArea1.setLayout(new GridLayout(3, false));
    adultButton = WidgetFactory.createCheckButton(buttonArea1, Messages.PagePart_check_adult,
            new GridData(SWT.BEGINNING, SWT.CENTER, false, false), Messages.PagePart_porno);
    faceButton = WidgetFactory.createCheckButton(buttonArea1, Messages.PagePart_detect_faces, null,
            Messages.PagePart_detect_faces_tooltip);
    celebrityButton = WidgetFactory.createCheckButton(buttonArea1, Messages.PagePart_detect_celebrities, null,
            Messages.PagePart_detect_celebrities_tooltip);
    Label sep = new Label(tGroup, SWT.SEPARATOR | SWT.HORIZONTAL);
    sep.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
    translateButton = WidgetFactory.createCheckButton(tGroup, Messages.PagePart_translate,
            new GridData(SWT.BEGINNING, SWT.CENTER, false, false, 2, 1), Messages.PagePart_translate_tooltip);
    return composite;
}

From source file:com.bdaum.zoom.ai.internal.preference.AiPreferencePage.java

License:Open Source License

@SuppressWarnings("unused")
@Override/*from   w  w  w. java 2  s  .  c om*/
protected void createPageContents(Composite composite) {
    setHelp(HelpContextIds.PREFERENCE_PAGE);
    enableButton = WidgetFactory.createCheckButton(composite, Messages.AiPreferencePage_enable, null);
    enableButton.addListener(new Listener() {
        @Override
        public void handleEvent(Event event) {
            setEnabled(enableButton.getSelection());
            updateFields();
        }
    });
    // Tab folder
    createTabFolder(composite, "Services"); //$NON-NLS-1$
    createExtensions(tabFolder, "com.bdaum.zoom.ai.aiPrefPage"); //$NON-NLS-1$
    String label = getPreferenceStore().getString(PreferenceConstants.ACTIVEPROVIDER);
    boolean tabinit = false;
    if (label != null) {
        int i = 0;
        for (CTabItem item : tabFolder.getItems()) {
            if (label.equals(item.getText().trim())) {
                tabFolder.setSelection(i);
                tabinit = true;
                break;
            }
            ++i;
        }
    }
    new Label(composite, SWT.NONE);
    // Translator
    CGroup eGroup = UiUtilities.createGroup(composite, 3, Messages.AiPreferencePage_0);
    new Label(eGroup, SWT.NONE).setText(Messages.AiPreferencePage_key1_or_key2);
    keyField = new Text(eGroup, SWT.SINGLE | SWT.LEAD | SWT.BORDER);
    keyField.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
    keyField.addModifyListener(this);
    new Label(eGroup, SWT.NONE).setText(Messages.AiPreferencePage_status);
    statusField = new Label(eGroup, SWT.WRAP);
    statusField.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
    new Label(eGroup, SWT.NONE).setText(Messages.AiPreferencePage_translate_to);
    languageViewer = new ComboViewer(eGroup, SWT.READ_ONLY);
    GridData data = new GridData(SWT.BEGINNING, SWT.CENTER, false, false);
    data.widthHint = 120;
    languageViewer.getCombo().setLayoutData(data);
    languageViewer.setContentProvider(ArrayContentProvider.getInstance());
    languageViewer.setLabelProvider(new LabelProvider() {
        @Override
        public String getText(Object element) {
            if (element instanceof Locale)
                return ((Locale) element).getDisplayLanguage();
            return super.getText(element);
        }
    });
    languageViewer.getCombo().setVisibleItemCount(20);

    CLink link = new CLink(eGroup, SWT.NONE);
    link.setLayoutData(new GridData(SWT.END, SWT.CENTER, true, false));
    link.setText(Messages.AiPreferencePage_visit_account);
    link.addListener(new Listener() {
        @Override
        public void handleEvent(Event event) {
            String url = System.getProperty("com.bdaum.zoom.msTranslation"); //$NON-NLS-1$
            try {
                PlatformUI.getWorkbench().getBrowserSupport().getExternalBrowser().openURL(new URL(url));
            } catch (PartInitException e1) {
                // do nothing
            } catch (MalformedURLException e1) {
                // should never happen
            }
        }
    });
    if (!tabinit)
        initTabFolder(0);
    fillValues();
    setEnabled(enableButton.getSelection());
    updateButtons();
}

From source file:com.bdaum.zoom.peer.internal.preferences.PeerPreferencePage.java

License:Open Source License

@SuppressWarnings("unused")
private Control createSharedGroup(CTabFolder parent) {
    Composite comp = new Composite(parent, SWT.NONE);
    comp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    comp.setLayout(new GridLayout());
    Composite innerComp = new Composite(comp, SWT.NONE);
    GridLayout layout = new GridLayout(2, false);
    layout.marginWidth = 0;/*from ww  w  .j av  a2  s .c o m*/
    layout.marginHeight = 20;
    innerComp.setLayout(layout);
    innerComp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    Label label = new Label(innerComp, SWT.WRAP);
    label.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false, 2, 1));
    label.setText(Messages.PeerPreferencePage_shared_cats_msg);

    catViewer = new TreeViewer(innerComp, SWT.FULL_SELECTION | SWT.SINGLE | SWT.BORDER | SWT.V_SCROLL);
    catViewer.getTree().setLinesVisible(true);
    catViewer.getTree().setHeaderVisible(true);
    catViewer.getTree().setLayoutData(new GridData(SWT.BEGINNING, SWT.FILL, false, true));
    TreeViewerColumn col1 = new TreeViewerColumn(catViewer, SWT.NONE);
    col1.getColumn().setWidth(400);
    col1.getColumn().setText(Messages.PeerPreferencePage_path);
    col1.setLabelProvider(ZColumnLabelProvider.getDefaultInstance());
    TreeViewerColumn col2 = new TreeViewerColumn(catViewer, SWT.NONE);
    col2.getColumn().setWidth(200);
    col2.getColumn().setText(Messages.PeerPreferencePage_privacy);
    col2.setLabelProvider(new ZColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            if (element instanceof SharedCatalog)
                return translatePrivacy(((SharedCatalog) element).getPrivacy());
            if (element instanceof PeerDefinition)
                return ((PeerDefinition) element).getRightsLabel();
            return ""; //$NON-NLS-1$
        }
    });
    col1.setEditingSupport(new EditingSupport(catViewer) {
        @Override
        protected void setValue(Object element, Object value) {
            if (element instanceof PeerDefinition && value instanceof PeerDefinition) {
                ((PeerDefinition) element).setHost(((PeerDefinition) value).getHost());
                ((PeerDefinition) element).setPort(((PeerDefinition) value).getPort());
                catViewer.update(element, null);
                validate();
            }
        }

        @Override
        protected Object getValue(Object element) {
            if (element instanceof PeerDefinition)
                return element;
            return null;
        }

        @Override
        protected CellEditor getCellEditor(final Object element) {
            if (element instanceof PeerDefinition) {
                return new DialogCellEditor(catViewer.getTree()) {
                    @Override
                    protected Object openDialogBox(Control cellEditorWindow) {
                        PeerDefinitionDialog dialog = new PeerDefinitionDialog(cellEditorWindow.getShell(),
                                (PeerDefinition) element, true, true, true);
                        if (dialog.open() == Window.OK)
                            return dialog.getResult();
                        return null;
                    }
                };
            }
            return null;
        }

        @Override
        protected boolean canEdit(Object element) {
            return (element instanceof PeerDefinition);
        }
    });
    col2.setEditingSupport(new EditingSupport(catViewer) {
        @Override
        protected void setValue(Object element, Object value) {
            if (element instanceof SharedCatalog && value instanceof Integer) {
                ((SharedCatalog) element).setPrivacy((Integer) value);
                catViewer.update(element, null);
            } else if (element instanceof PeerDefinition && value instanceof PeerDefinition) {
                ((PeerDefinition) element).setRights(((PeerDefinition) value).getRights());
                catViewer.update(element, null);
            }
        }

        @Override
        protected Object getValue(Object element) {
            if (element instanceof SharedCatalog)
                return ((SharedCatalog) element).getPrivacy();
            if (element instanceof PeerDefinition)
                return element;
            return null;
        }

        @Override
        protected CellEditor getCellEditor(final Object element) {
            if (element instanceof SharedCatalog) {
                ComboBoxViewerCellEditor editor = new ComboBoxViewerCellEditor(catViewer.getTree());
                editor.setLabelProvider(new LabelProvider() {
                    @Override
                    public String getText(Object element) {
                        return translatePrivacy(((Integer) element));
                    }
                });
                editor.setContentProvider(ArrayContentProvider.getInstance());
                editor.setInput(((SharedCatalog) element).getRestrictions().isEmpty()
                        ? new Integer[] { QueryField.SAFETY_RESTRICTED, QueryField.SAFETY_MODERATE,
                                QueryField.SAFETY_SAFE, QueryField.SAFETY_LOCAL }
                        : new Integer[] { QueryField.SAFETY_RESTRICTED, QueryField.SAFETY_MODERATE,
                                QueryField.SAFETY_SAFE });
                return editor;
            }
            if (element instanceof PeerDefinition) {
                return new DialogCellEditor(catViewer.getTree()) {
                    @Override
                    protected Object openDialogBox(Control cellEditorWindow) {
                        PeerDefinitionDialog dialog = new PeerDefinitionDialog(cellEditorWindow.getShell(),
                                (PeerDefinition) element, false, true, false);
                        if (dialog.open() == Window.OK)
                            return dialog.getResult();
                        return null;
                    }

                    @Override
                    protected void updateContents(Object value) {
                        if (value instanceof PeerDefinition)
                            super.updateContents(((PeerDefinition) value).getRightsLabel());
                    }
                };
            }
            return null;
        }

        @Override
        protected boolean canEdit(Object element) {
            return true;
        }
    });
    catViewer.setContentProvider(new ITreeContentProvider() {

        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
            // do nothing
        }

        public void dispose() {
            // do nothing
        }

        public boolean hasChildren(Object element) {
            if (element instanceof SharedCatalog)
                return !((SharedCatalog) element).getRestrictions().isEmpty();
            return false;
        }

        public Object getParent(Object element) {
            if (element instanceof PeerDefinition)
                return ((PeerDefinition) element).getParent();
            return null;
        }

        public Object[] getElements(Object inputElement) {
            if (inputElement instanceof Collection<?>)
                return ((Collection<?>) inputElement).toArray();
            return EMPTY;
        }

        public Object[] getChildren(Object parentElement) {
            if (parentElement instanceof SharedCatalog)
                return ((SharedCatalog) parentElement).getRestrictions().toArray();
            return EMPTY;
        }
    });
    new SortColumnManager(catViewer, new int[] { SWT.UP, SWT.NONE }, 0);
    catViewer.setComparator(ZViewerComparator.INSTANCE);
    UiUtilities.installDoubleClickExpansion(catViewer);
    Composite buttonGroup = new Composite(innerComp, SWT.NONE);
    buttonGroup.setLayoutData(new GridData(SWT.END, SWT.BEGINNING, false, true));
    buttonGroup.setLayout(new GridLayout());
    addCurrentButton = new Button(buttonGroup, SWT.PUSH);
    addCurrentButton.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
    addCurrentButton.setText(Messages.PeerPreferencePage_add_current);
    addCurrentButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            String catFile = Core.getCore().getDbManager().getFileName();
            SharedCatalog cat = new SharedCatalog(catFile, QueryField.SAFETY_RESTRICTED);
            @SuppressWarnings("unchecked")
            List<SharedCatalog> catalogs = (List<SharedCatalog>) catViewer.getInput();
            catalogs.add(cat);
            catViewer.setInput(catalogs);
            catViewer.setSelection(new StructuredSelection(cat));
            updateButtons();
        }
    });

    final Button addButton = new Button(buttonGroup, SWT.PUSH);
    addButton.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
    addButton.setText(Messages.PeerPreferencePage_add);
    addButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            FileDialog dialog = new FileDialog(getShell(), SWT.OPEN);
            dialog.setFileName(Core.getCore().getDbManager().getFileName());
            String filename = dialog.open();
            if (filename != null) {
                SharedCatalog cat = new SharedCatalog(filename, QueryField.SAFETY_RESTRICTED);
                @SuppressWarnings("unchecked")
                List<SharedCatalog> catalogs = (List<SharedCatalog>) catViewer.getInput();
                catalogs.add(cat);
                catViewer.setInput(catalogs);
                catViewer.setSelection(new StructuredSelection(cat));
            }
        }
    });
    addRestrictionButton = new Button(buttonGroup, SWT.PUSH);
    addRestrictionButton.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
    addRestrictionButton.setText(Messages.PeerPreferencePage_add_restriction);
    addRestrictionButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            IStructuredSelection selection = (IStructuredSelection) catViewer.getSelection();
            Object firstElement = selection.getFirstElement();
            if (firstElement instanceof SharedCatalog) {
                PeerDefinitionDialog dialog = new PeerDefinitionDialog(getControl().getShell(), null, true,
                        true, true);
                if (dialog.open() == PeerDefinitionDialog.OK) {
                    PeerDefinition result = dialog.getResult();
                    result.setParent((SharedCatalog) firstElement);
                    catViewer.setInput(catViewer.getInput());
                    catViewer.expandToLevel(firstElement, 1);
                    catViewer.setSelection(new StructuredSelection(result));
                    validate();
                }
            }
        }
    });
    removeCatButton = new Button(buttonGroup, SWT.PUSH);
    removeCatButton.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
    removeCatButton.setText(Messages.PeerPreferencePage_remove);
    removeCatButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            IStructuredSelection sel = (IStructuredSelection) catViewer.getSelection();
            Object firstElement = sel.getFirstElement();
            if (firstElement instanceof SharedCatalog) {
                @SuppressWarnings("unchecked")
                List<SharedCatalog> catalogs = (List<SharedCatalog>) catViewer.getInput();
                catalogs.remove(firstElement);
                catViewer.setInput(catalogs);
                validate();
                updateButtons();
            }
        }
    });
    catViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            updateButtons();
        }
    });
    return comp;
}

From source file:com.bdaum.zoom.ui.internal.dialogs.AutomatedRatingDialog.java

License:Open Source License

@Override
protected Control createDialogArea(Composite parent) {
    Composite area = (Composite) super.createDialogArea(parent);
    Composite composite = new Composite(area, SWT.NONE);
    composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    composite.setLayout(new GridLayout());
    aiService = CoreActivator.getDefault().getAiService();
    ratingProviderIds = aiService.getRatingProviderIds();
    ratingProviderNames = aiService.getRatingProviderNames();
    CGroup providerGroup = CGroup.create(composite, 1, Messages.AutomatedRatingDialog_service);
    new Label(providerGroup, SWT.NONE).setText(Messages.AutomatedRatingDialog_provider);
    if (ratingProviderIds.length > 1) {
        providerViewer = new ComboViewer(providerGroup, SWT.NONE);
        providerViewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
        providerViewer.setContentProvider(ArrayContentProvider.getInstance());
        providerViewer.setLabelProvider(new LabelProvider() {
            @Override//from w w  w. j av  a2  s.  co m
            public String getText(Object element) {
                for (int i = 0; i < ratingProviderIds.length; i++)
                    if (ratingProviderIds[i].equals(element))
                        return ratingProviderNames[i];
                return super.getText(element);
            }
        });
        providerViewer.addSelectionChangedListener(new ISelectionChangedListener() {
            @Override
            public void selectionChanged(SelectionChangedEvent event) {
                selectedProvider = (String) providerViewer.getStructuredSelection().getFirstElement();
                updateModelViewer();
                validate();
            }
        });
    } else {
        new Label(providerGroup, SWT.NONE).setText(ratingProviderNames[0]);
        selectedProvider = ratingProviderIds[0];
    }
    new Label(providerGroup, SWT.NONE).setText(Messages.AutomatedRatingDialog_sujet);
    modelViewer = new ComboViewer(providerGroup, SWT.NONE);
    modelViewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
    modelViewer.setContentProvider(ArrayContentProvider.getInstance());
    modelViewer.setLabelProvider(new LabelProvider() {
        @Override
        public String getText(Object element) {
            for (int i = 0; i < modelIds.length; i++)
                if (modelIds[i].equals(element))
                    return modelLabels[i];
            return super.getText(element);
        }
    });
    modelViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            validate();
        }
    });

    CGroup optionsGroup = CGroup.create(composite, 1, Messages.AutomatedRatingDialog_options);
    new Label(optionsGroup, SWT.NONE).setText(Messages.AutomatedRatingDialog_max_rating);
    maxField = new NumericControl(optionsGroup, SWT.NONE);
    maxField.setMinimum(1);
    maxField.setMaximum(5);
    overwriteButton = WidgetFactory.createCheckButton(optionsGroup, Messages.AutomatedRatingDialog_overwrite,
            null);
    return area;
}

From source file:com.bdaum.zoom.ui.internal.dialogs.EditMetaDialog.java

License:Open Source License

private Composite createHeaderGroup(Composite comp) {
    final Composite header = new Composite(comp, SWT.NONE);
    header.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
    header.setLayout(new GridLayout(4, false));
    // Line 1//from   ww w. j a v  a  2s.c o  m
    new Label(header, SWT.NONE).setText(Messages.EditMetaDialog_file_name);
    Composite catGroup = new Composite(header, SWT.NONE);
    catGroup.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 3, 1));
    GridLayout gridLayout = new GridLayout(2, false);
    gridLayout.marginWidth = 0;
    catGroup.setLayout(gridLayout);

    fileName = new Text(catGroup, SWT.READ_ONLY | SWT.BORDER);
    fileName.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
    fileName.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseDoubleClick(MouseEvent e) {
            BatchUtilities.showInFolder(new File(fileName.getText()));
        }
    });
    versionLabel = new Label(catGroup, SWT.NONE);

    GridData data = new GridData(SWT.END, SWT.CENTER, false, false);
    data.horizontalIndent = 20;
    versionLabel.setLayoutData(data);
    // Line 2
    new Label(header, SWT.NONE).setText(Messages.EditMetaDialog_catalog_theme);
    themeField = new ComboViewer(header, SWT.DROP_DOWN | SWT.READ_ONLY);
    themeField.getControl().setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, true, false));
    themeField.setContentProvider(ArrayContentProvider.getInstance());
    themeField.setLabelProvider(new LabelProvider());
    themeField.setInput(CoreActivator.getDefault().getThemes().values());
    final BundleContext bundleContext = UiActivator.getDefault().getBundle().getBundleContext();
    final ServiceReference<?> ref = bundleContext.getServiceReference(ISpellCheckingService.class.getName());
    if (ref != null) {
        Label label = new Label(header, SWT.RIGHT);
        label.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false));
        label.setText(Messages.EditMetaDialog_language);
        final ISpellCheckingService service = (ISpellCheckingService) bundleContext.getService(ref);
        Collection<String> supportedLanguages = service.getSupportedLanguages();
        bundleContext.ungetService(ref);
        if (supportedLanguages != null && !supportedLanguages.isEmpty()) {
            languageCombo = new ComboViewer(header);
            languageCombo.setContentProvider(ArrayContentProvider.getInstance());
            languageCombo.setLabelProvider(new LabelProvider() {
                @Override
                public String getText(Object element) {
                    if (element instanceof String) {
                        String prefix = (String) element;
                        String variant = ""; //$NON-NLS-1$
                        int p = prefix.indexOf('_');
                        if (p > 0) {
                            p = prefix.indexOf('_', p + 1);
                            if (p > 0) {
                                String v = prefix.substring(p + 1);
                                if ("frami".equals(v)) //$NON-NLS-1$
                                    v = Messages.EditMetaDialog_frami;
                                variant = " (" + v + ')'; //$NON-NLS-1$
                                prefix = prefix.substring(0, p);
                            }
                        }
                        for (Locale locale : Locale.getAvailableLocales())
                            if (locale.toString().equals(prefix))
                                return locale.getDisplayName() + variant;
                    }
                    return super.getText(element);
                }
            });
            languageCombo.setComparator(ZViewerComparator.INSTANCE);
            languageCombo.setInput(supportedLanguages);
        } else {
            CLink link = new CLink(header, SWT.NONE);
            link.setText(Messages.EditMetaDialog_intall_dict);
            link.addListener(new Listener() {
                @Override
                public void handleEvent(Event event) {
                    try {
                        String language = Locale.getDefault().getLanguage();
                        String url = System.getProperty("com.bdaum.zoom.dictionaries." + language); //$NON-NLS-1$
                        if (url == null)
                            url = System.getProperty("com.bdaum.zoom.dictionaries"); //$NON-NLS-1$
                        PlatformUI.getWorkbench().getBrowserSupport().getExternalBrowser()
                                .openURL(new URL(url));
                    } catch (PartInitException e1) {
                        // do nothing
                    } catch (MalformedURLException e1) {
                        // should never happen
                    }
                }
            });
        }
    } else {
        Label label = new Label(header, SWT.NONE);
        label.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, true, false, 2, 1));
    }
    // Line 3
    Composite line3Comp = new Composite(header, SWT.NONE);
    line3Comp.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, true, false, 2, 1));
    GridLayout layout = new GridLayout(3, false);
    layout.marginHeight = layout.marginWidth = 0;
    line3Comp.setLayout(layout);

    new Label(line3Comp, SWT.NONE).setText(Messages.EditMetaDialog_creation_date);

    creationDate = new Text(line3Comp, SWT.READ_ONLY | SWT.BORDER);
    creationDate.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, true, false));

    readOnlyButton = WidgetFactory.createCheckButton(line3Comp, Messages.EditMetaDialog_write_protected,
            new GridData(SWT.BEGINNING, SWT.CENTER, true, false, 1, 1));
    readOnlyButton.addListener(new Listener() {
        @Override
        public void handleEvent(Event event) {
            readonly = readOnlyButton.getSelection();
            updateFolderButtons();
            updateButtons();
            updateFields();
        }
    });
    readOnlyButton.setEnabled(!newDb);

    Label label = new Label(header, SWT.RIGHT);
    label.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false));
    label.setText(Messages.EditMetaDialog_last_import);

    lastImport = new Text(header, SWT.READ_ONLY | SWT.BORDER);
    lastImport.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseDoubleClick(MouseEvent e) {
            IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
            if (window != null) {
                LastImportCommand command = new LastImportCommand();
                command.init(window);
                command.run();
            }
        }
    });
    // Line 4
    new Label(header, SWT.NONE).setText(Messages.EditMetaDialog_seqno);

    seqNoField = new Text(header, SWT.READ_ONLY | SWT.BORDER);
    seqNoField.setLayoutData(new GridData(80, SWT.DEFAULT));

    label = new Label(header, SWT.RIGHT);
    label.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false));
    label.setText(Messages.EditMetaDialog_yearlyseqno);

    yearlySeqNoField = new Text(header, SWT.READ_ONLY | SWT.BORDER);
    yearlySeqNoField.setLayoutData(new GridData(80, SWT.DEFAULT));

    // Line 5
    new Label(header, SWT.NONE).setText(Messages.EditMetaDialog_backup_file);
    Composite backupGroup = new Composite(header, SWT.NONE);
    backupGroup.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false, 3, 1));
    gridLayout = new GridLayout(3, false);
    gridLayout.marginWidth = 0;
    backupGroup.setLayout(gridLayout);
    backupField = new TextWithVariableGroup(backupGroup, null, 400, Constants.BV_ALL, false, null, null, null); // $NON-NLS-1$
    backupIntervalLink = new CLink(backupGroup, SWT.NONE);
    backupIntervalLink.setText(Messages.EditMetaDialog_configure_interval);
    backupIntervalLink.addListener(new Listener() {
        @Override
        public void handleEvent(Event event) {
            PreferencesUtil
                    .createPreferenceDialogOn(getShell(), GeneralPreferencePage.ID, new String[0], "backup") //$NON-NLS-1$
                    .open();
            updateBackupTooltip();
        }
    });
    final Composite editArea = new Composite(comp, SWT.NONE);
    editArea.setLayout(new GridLayout());
    editArea.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    return editArea;
}

From source file:com.bdaum.zoom.ui.internal.dialogs.EditMetaDialog.java

License:Open Source License

private void createOverviewGroup(final CTabFolder folder) {
    final Composite composite = createTabPage(folder, Messages.EditMetaDialog_overview,
            Messages.EditMetaDialog_owner_info, 1, 0);

    GridData layoutData = new GridData(SWT.FILL, SWT.CENTER, true, false);
    layoutData.heightHint = 40;//from www . ja  va 2  s .  c o  m
    layoutData.widthHint = 400;
    ownerInformation = new CheckedText(composite, SWT.V_SCROLL | SWT.MULTI | SWT.BORDER | SWT.WRAP);
    ownerInformation.setSpellingOptions(8, ISpellCheckingService.DESCRIPTIONOPTIONS);
    ownerInformation.setLayoutData(layoutData);
    new Label(composite, SWT.NONE).setText(Messages.EditMetaDialog_description);

    layoutData = new GridData(SWT.FILL, SWT.FILL, true, true);
    layoutData.heightHint = 100;
    layoutData.widthHint = 400;
    description = new CheckedText(composite, SWT.V_SCROLL | SWT.BORDER | SWT.MULTI | SWT.WRAP);
    description.setLayoutData(layoutData);
    final Composite optionsGroup = new Composite(composite, SWT.NONE);
    optionsGroup.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
    optionsGroup.setLayout(new GridLayout(7, false));

    new Label(optionsGroup, SWT.NONE).setText(Messages.EditMetaDialog_create_timeline);

    timelineViewer = new ComboViewer(optionsGroup);
    timelineViewer.setContentProvider(ArrayContentProvider.getInstance());
    timelineViewer.setLabelProvider(new LabelProvider() {

        @Override
        public String getText(Object element) {
            if (Meta_type.timeline_year.equals(element))
                return Messages.EditMetaDialog_by_year;
            if (Meta_type.timeline_month.equals(element))
                return Messages.EditMetaDialog_by_month;
            if (Meta_type.timeline_day.equals(element))
                return Messages.EditMetaDialog_by_day;
            if (Meta_type.timeline_week.equals(element))
                return Messages.EditMetaDialog_by_week;
            if (Meta_type.timeline_weekAndDay.equals(element))
                return Messages.EditMetaDialog_by_week_and_day;
            return Messages.EditMetaDialog_none;
        }
    });
    timelineViewer.setInput(Meta_type.timelineALLVALUES);
    if (!newDb) {
        createTimeLineButton = new Button(optionsGroup, SWT.PUSH);
        createTimeLineButton.setText(Messages.EditMetaDialog_create_now);
        createTimeLineButton.setToolTipText(Messages.EditMetaDialog_recreate_timeline);
        createTimeLineButton.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                OperationJob.executeOperation(
                        new CreateTimelineOperation(
                                (String) timelineViewer.getStructuredSelection().getFirstElement()),
                        EditMetaDialog.this);
            }
        });
    }
    timelineViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            updateCreateNowButtons();
        }
    });
    new Label(optionsGroup, SWT.NONE).setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));

    new Label(optionsGroup, SWT.NONE).setText(Messages.EditMetaDialog_create_loc_folders);

    locationViewer = new ComboViewer(optionsGroup);
    locationViewer.setContentProvider(ArrayContentProvider.getInstance());
    locationViewer.setLabelProvider(new ZColumnLabelProvider() {

        @Override
        public String getText(Object element) {
            if (Meta_type.locationFolders_country.equals(element))
                return Messages.EditMetaDialog_byCountry;
            if (Meta_type.locationFolders_state.equals(element))
                return Messages.EditMetaDialog_byState;
            if (Meta_type.locationFolders_city.equals(element))
                return Messages.EditMetaDialog_byCity;
            return Messages.EditMetaDialog_none;
        }
    });
    locationViewer.setInput(Meta_type.locationFoldersALLVALUES);
    createLocationFoldersButton = new Button(optionsGroup, SWT.PUSH);
    createLocationFoldersButton.setText(Messages.EditMetaDialog_create_now);
    createLocationFoldersButton.setToolTipText(Messages.EditMetaDialog_recreate_locations);
    createLocationFoldersButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            OperationJob.executeOperation(
                    new CreateLocationFolderOperation(
                            (String) locationViewer.getStructuredSelection().getFirstElement()),
                    EditMetaDialog.this);
        }
    });
    locationViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            updateCreateNowButtons();
        }
    });

    Composite userfieldGroup = new Composite(composite, SWT.NONE);
    userfieldGroup.setLayoutData(new GridData(GridData.FILL_BOTH));
    userfieldGroup.setLayout(new GridLayout(2, false));
    new Label(userfieldGroup, SWT.NONE).setText(Messages.EditMetaDialog_user_field_lab_1);

    userFieldLabel1 = new Text(userfieldGroup, SWT.BORDER);
    userFieldLabel1.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));

    new Label(userfieldGroup, SWT.NONE).setText(Messages.EditMetaDialog_user_field_lab_2);

    userFieldLabel2 = new Text(userfieldGroup, SWT.BORDER);
    userFieldLabel2.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
}

From source file:com.bdaum.zoom.ui.internal.dialogs.ExhibitionEditDialog.java

License:Open Source License

private void createFloorplan(Composite parent) {
    parent.setLayout(new GridLayout());
    Composite comp = new Composite(parent, SWT.NONE);
    comp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    comp.setLayout(new GridLayout(2, false));
    Composite detailGroup = new Composite(comp, SWT.NONE);
    detailGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    detailGroup.setLayout(new GridLayout(2, false));
    itemViewer = new ComboViewer(detailGroup);
    itemViewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
    itemViewer.setContentProvider(ArrayContentProvider.getInstance());
    itemViewer.setLabelProvider(new LabelProvider() {
        @Override//from   w  w  w  . j  a  va 2s  .  c o m
        public String getText(Object element) {
            if (element instanceof Exhibition)
                return Messages.ExhibitionEditDialog_entrance;
            if (element instanceof Wall)
                return ((Wall) element).getLocation();
            return super.getText(element);
        }
    });
    List<Object> items = new ArrayList<Object>(current.getWall().size() + 1);
    items.add(current);
    items.addAll(current.getWall());
    itemViewer.setInput(items);
    Label xlabel = new Label(detailGroup, SWT.NONE);
    xlabel.setText(Messages.ExhibitionEditDialog_ground_xpos + captionUnitmft());
    xspinner = new NumericControl(detailGroup, NumericControl.LOGARITHMIC);
    xspinner.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
    xspinner.setMaximum(unit == 'i' ? 1500000 : 500000);
    xspinner.setIncrement(unit == 'i' ? 30 : 10);
    xspinner.setDigits(2);
    Listener listener = new Listener() {
        @Override
        public void handleEvent(Event event) {
            if (event.widget == xspinner)
                updateItems(toMm(xspinner.getSelection()), -1, Double.NaN);
            else if (event.widget == yspinner)
                updateItems(-1, toMm(yspinner.getSelection()), Double.NaN);
            else if (event.widget == aspinner)
                updateItems(-1, -1, aspinner.getSelection() / 10d);
        }
    };
    xspinner.addListener(listener);
    Label ylabel = new Label(detailGroup, SWT.NONE);
    ylabel.setText(Messages.ExhibitionEditDialog_ground_ypos + captionUnitmft());
    yspinner = new NumericControl(detailGroup, NumericControl.LOGARITHMIC);
    yspinner.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
    yspinner.setMaximum(unit == 'i' ? 1500000 : 500000);
    yspinner.setIncrement(unit == 'i' ? 30 : 10);
    yspinner.setDigits(2);
    yspinner.addListener(listener);
    alabel = new Label(detailGroup, SWT.NONE);
    alabel.setText(Messages.ExhibitionEditDialog_ground_angle);
    aspinner = new NumericControl(detailGroup, SWT.NONE);
    aspinner.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
    aspinner.setMaximum(3600);
    aspinner.setIncrement(10);
    aspinner.setDigits(1);
    aspinner.addListener(listener);

    floorplan = new Canvas(comp, SWT.DOUBLE_BUFFERED);
    GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
    data.widthHint = 400;
    data.heightHint = 300;
    floorplan.setLayoutData(data);
    floorplan.addPaintListener(new PaintListener() {
        public void paintControl(PaintEvent e) {
            Rectangle area = floorplan.getClientArea();
            GC gc = e.gc;
            gc.setBackground(e.display.getSystemColor(SWT.COLOR_WHITE));
            gc.fillRectangle(area);
            int minx = Integer.MAX_VALUE;
            int miny = Integer.MAX_VALUE;
            int maxx = Integer.MIN_VALUE;
            int maxy = Integer.MIN_VALUE;
            int n = current.getWall().size();
            wxs = new int[n];
            wys = new int[n];
            wx2s = new int[n];
            wy2s = new int[n];
            double[] wa = new double[n];
            int i = 0;
            for (Wall wall : current.getWall()) {
                double angle = wall.getGAngle();
                int gx = wall.getGX();
                int gy = wall.getGY();
                boolean match = false;
                for (int j = 0; j < i; j++)
                    if (gx == wxs[j] && gy == wys[j] && angle == wa[j]) {
                        match = true;
                        break;
                    }
                if (match) {
                    wall.setGX(wx2s[i - 1]);
                    gx = wx2s[i - 1];
                    wall.setGY(wy2s[i - 1]);
                    gy = wy2s[i - 1];
                    double d = wa[i - 1];
                    if (d > 45 && d < 135)
                        angle = ((i / 2) % 2 == 0) ? d - 90 : d + 90;
                    else if (d > 135 && d < 225)
                        angle = d - 90;
                    else
                        angle = d + 90;
                    if (angle < 0)
                        angle += 360;
                    else if (angle >= 360)
                        angle -= 360;
                    wall.setGAngle(angle);
                    updateFloorplanDetails();
                }
                int width = wall.getWidth();
                double r = Math.toRadians(angle);
                int gx2 = (int) (gx + Math.cos(r) * width + D05);
                int gy2 = (int) (gy + Math.sin(r) * width + D05);
                minx = Math.min(minx, Math.min(gx, gx2));
                miny = Math.min(miny, Math.min(gy, gy2));
                maxx = Math.max(maxx, Math.max(gx, gx2));
                maxy = Math.max(maxy, Math.max(gy, gy2));
                wxs[i] = gx;
                wys[i] = gy;
                wx2s[i] = gx2;
                wy2s[i] = gy2;
                wa[i] = angle;
                ++i;
            }
            int sx = current.getStartX();
            int sy = current.getStartY();
            minx = Math.min(minx, sx);
            miny = Math.min(miny, sy);
            maxx = Math.max(maxx, sx);
            maxy = Math.max(maxy, sy);
            double w = maxx - minx;
            double h = maxy - miny;
            scale = Math.min(area.width / w, area.height / h) / 2d;
            xoff = (int) (area.width / 4 - minx * scale);
            yoff = (int) (area.height / 4 - miny * scale);
            double d = -Math.floor(xoff / (D1000 * scale)) * D1000;
            while (true) {
                int x = xoff + (int) (d * scale + D05);
                if (x > area.width)
                    break;
                gc.setForeground(e.display.getSystemColor(d == 0d ? SWT.COLOR_BLUE : SWT.COLOR_GRAY));
                gc.drawLine(x, 0, x, area.height);
                d += D1000;
            }
            d = -Math.floor(yoff / (D1000 * scale)) * D1000;
            while (true) {
                int y = yoff + (int) (d * scale + D05);
                gc.setForeground(e.display.getSystemColor(d == 0d ? SWT.COLOR_BLUE : SWT.COLOR_GRAY));
                if (y > area.height)
                    break;
                gc.drawLine(0, y, area.width, y);
                d += D1000;
            }
            gc.setBackground(e.display.getSystemColor(SWT.COLOR_GRAY));
            gc.fillRectangle(xoff - 3, yoff - 3, 6, 6);
            gc.setLineWidth(2);
            Wall doorWall = null;
            i = 0;
            for (Wall wall : current.getWall()) {
                gc.setForeground(
                        e.display.getSystemColor(selectedItem == wall ? SWT.COLOR_RED : SWT.COLOR_DARK_GRAY));
                int x1 = xoff + (int) (wxs[i] * scale + D05);
                int y1 = yoff + (int) (wys[i] * scale + D05);
                int x2 = xoff + (int) (wx2s[i] * scale + D05);
                int y2 = yoff + (int) (wy2s[i] * scale + D05);
                gc.drawLine(x1, y1, x2, y2);
                double aAngle = wall.getGAngle();
                double r = Math.toRadians(aAngle);
                double sin = Math.sin(r);
                double cos = Math.cos(r);
                if (sx >= Math.min(wxs[i], wx2s[i]) - 50 && sx <= Math.max(wxs[i], wx2s[i]) + 50
                        && sy >= Math.min(wys[i], wy2s[i]) - 50 && sy <= Math.max(wys[i], wy2s[i]) + 50) {
                    if (Math.abs(cos) > 0.01d) {
                        if (Math.abs(wys[i] - sy + (sx - wxs[i]) * sin / cos) < 50)
                            doorWall = wall;
                    } else
                        doorWall = wall;
                }
                int xa = (int) ((x1 + x2) * D05 - sin * 5);
                int ya = (int) ((y1 + y2) * D05 + cos * 5);
                aAngle += 135;
                r = Math.toRadians(aAngle);
                int x3 = (int) (xa + 6 * Math.cos(r) + D05);
                int y3 = (int) (ya + 6 * Math.sin(r) + D05);
                gc.drawLine(xa, ya, x3, y3);
                aAngle -= 270;
                r = Math.toRadians(aAngle);
                x3 = (int) (xa + 6 * Math.cos(r) + D05);
                y3 = (int) (ya + 6 * Math.sin(r) + D05);
                gc.drawLine(xa, ya, x3, y3);
                ++i;
            }
            if (doorWall != null) {
                int lineStyle = gc.getLineStyle();
                gc.setLineStyle(SWT.LINE_DASH);
                double r = Math.toRadians(doorWall.getGAngle());
                double sin = Math.sin(r);
                double cos = Math.cos(r);
                double dx = sx * scale - sin * 5;
                double dy = sy * scale + cos * 5;
                int dx1 = (int) (dx + DOORWIDTH / 2 * scale * cos + D05);
                int dy1 = (int) (dy - DOORWIDTH / 2 * scale * sin + D05);
                int dx2 = (int) (dx - (INFOWIDTH + DOORWIDTH / 2) * scale * cos + D05);
                int dy2 = (int) (dy + (INFOWIDTH + DOORWIDTH / 2) * scale * sin + D05);
                gc.drawLine(xoff + dx1, yoff + dy1, xoff + dx2, yoff + dy2);
                gc.setLineStyle(lineStyle);
            }
            gc.setForeground(
                    e.display.getSystemColor(selectedItem == current ? SWT.COLOR_RED : SWT.COLOR_DARK_GREEN));
            gc.drawOval(xoff + (int) (sx * scale + D05) - ENTRANCEDIAMETER / 2 - 1,
                    yoff + (int) (sy * scale + D05) - ENTRANCEDIAMETER / 2 - 1, ENTRANCEDIAMETER,
                    ENTRANCEDIAMETER);
        }
    });
    floorplan.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseDown(MouseEvent e) {
            if (hotObject != null) {
                dragStart = new Point(e.x, e.y);
                draggedObject = hotObject;
                dragHandle = hotIndex;
                hotObject = null;
            }
        }

        @Override
        public void mouseUp(MouseEvent e) {
            recentlyDraggedObject = draggedObject;
            draggedObject = null;
            Object sel = null;
            int x = e.x;
            int y = e.y;
            int sx = xoff + (int) (current.getStartX() * scale + D05);
            int sy = yoff + (int) (current.getStartY() * scale + D05);
            if (Math.sqrt((sx - x) * (sx - x) + (sy - y) * (sy - y)) <= ENTRANCEDIAMETER / 2 + 1) {
                sel = current;
            } else {
                int i = 0;
                for (Wall wall : current.getWall()) {
                    int x1 = xoff + (int) (wxs[i] * scale + D05);
                    int y1 = yoff + (int) (wys[i] * scale + D05);
                    int x2 = xoff + (int) (wx2s[i] * scale + D05);
                    int y2 = yoff + (int) (wy2s[i] * scale + D05);
                    double d = Math.abs((x2 - x1) * (y1 - y) - (x1 - x) * (y2 - y1))
                            / Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
                    if (d < TOLERANCE && x <= Math.max(x1, x2) + TOLERANCE && x >= Math.min(x1, x2) - TOLERANCE
                            && y <= Math.max(y1, y2) + TOLERANCE && y >= Math.min(y1, y2) - TOLERANCE) {
                        sel = wall;
                        break;
                    }
                    ++i;
                }
            }
            if (sel != null)
                itemViewer.setSelection(new StructuredSelection(sel));
        }
    });
    floorplan.addMouseMoveListener(new MouseMoveListener() {
        public void mouseMove(MouseEvent e) {
            if (draggedObject != null) {
                int dx = e.x - dragStart.x;
                int dy = e.y - dragStart.y;
                int x = origin.x + (int) (dx / scale + D05);
                int y = origin.y + (int) (dy / scale + D05);
                if (draggedObject == current) {
                    current.setStartX(x);
                    current.setStartY(y);
                } else if (draggedObject instanceof Wall) {
                    Wall wall = (Wall) draggedObject;
                    if (dragHandle == 1) {
                        wall.setGX(x);
                        wall.setGY(y);
                    } else {
                        double ddx = wall.getGX() - x;
                        double ddy = wall.getGY() - y;
                        double angle = ddx == 0 ? 90 : Math.toDegrees(Math.atan(ddy / ddx));
                        if (ddx > 0) {
                            if (ddy < 0)
                                angle += 180;
                            else
                                angle -= 180;
                        }
                        wall.setGAngle(angle);
                    }
                }
                floorplan.redraw();
                updateFloorplanDetails();
                return;
            }
            IStructuredSelection selection = itemViewer.getStructuredSelection();
            hotObject = null;
            hotIndex = -1;
            Object sel = selection.getFirstElement();
            int x = e.x;
            int y = e.y;
            int sx = xoff + (int) (current.getStartX() * scale + D05);
            int sy = yoff + (int) (current.getStartY() * scale + D05);
            if (sel == current
                    && Math.sqrt((sx - x) * (sx - x) + (sy - y) * (sy - y)) <= ENTRANCEDIAMETER / 2 + 1) {
                hotObject = current;
                origin.x = current.getStartX();
                origin.y = current.getStartY();
            } else {
                int i = 0;
                for (Wall wall : current.getWall()) {
                    if (sel == wall) {
                        int x1 = xoff + (int) (wxs[i] * scale + D05);
                        int y1 = yoff + (int) (wys[i] * scale + D05);
                        int x2 = xoff + (int) (wx2s[i] * scale + D05);
                        int y2 = yoff + (int) (wy2s[i] * scale + D05);
                        if (Math.sqrt((x1 - x) * (x1 - x) + (y1 - y) * (y1 - y)) <= TOLERANCE) {
                            hotIndex = 1;
                            hotObject = wall;
                            origin.x = wxs[i];
                            origin.y = wys[i];
                        } else if (Math.sqrt((x2 - x) * (x2 - x) + (y2 - y) * (y2 - y)) <= TOLERANCE) {
                            hotIndex = 2;
                            hotObject = wall;
                            origin.x = wx2s[i];
                            origin.y = wy2s[i];
                        }
                    }
                    ++i;
                }
            }
            if (hotObject != null) {
                if (hotIndex == 2)
                    floorplan.setCursor(rotCursor);
                else
                    floorplan.setCursor(getShell().getDisplay().getSystemCursor(SWT.CURSOR_SIZEALL));
            } else
                floorplan.setCursor(getShell().getDisplay().getSystemCursor(SWT.CURSOR_ARROW));
        }
    });
    floorplan.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            if (recentlyDraggedObject != null) {
                int dx = 0;
                int dy = 0;
                switch (e.keyCode) {
                case SWT.ARROW_LEFT:
                    dx = -10;
                    break;
                case SWT.ARROW_RIGHT:
                    dx = 10;
                    break;
                case SWT.ARROW_UP:
                    dy = -10;
                    break;
                case SWT.ARROW_DOWN:
                    dy = 10;
                    break;
                case SWT.HOME:
                    dx = -500;
                    break;
                case SWT.END:
                    dx = 500;
                    break;
                case SWT.PAGE_UP:
                    dy = -500;
                    break;
                case SWT.PAGE_DOWN:
                    dy = 500;
                    break;
                default:
                    return;
                }
                if (recentlyDraggedObject == current) {
                    current.setStartX(current.getStartX() + dx);
                    current.setStartY(current.getStartY() + dy);
                } else if (recentlyDraggedObject instanceof Wall) {
                    Wall wall = (Wall) recentlyDraggedObject;
                    int gx = wall.getGX();
                    int gy = wall.getGY();
                    if (dragHandle == 1) {
                        wall.setGX(gx + dx);
                        wall.setGY(gy + dy);
                    } else {
                        int width = wall.getWidth();
                        double r = Math.toRadians(wall.getGAngle());
                        int gx2 = (int) (gx + Math.cos(r) * width + D05);
                        int gy2 = (int) (gy + Math.sin(r) * width + D05);
                        double ddx = gx - gx2 - dx;
                        double ddy = gy - gy2 - dy;
                        double angle = ddx == 0 ? 90 : Math.toDegrees(Math.atan(ddy / ddx));
                        if (ddx > 0)
                            angle = ddy < 0 ? 180 + angle : angle - 180;
                        wall.setGAngle(angle);
                    }
                }
                floorplan.redraw();
                updateFloorplanDetails();
                return;
            }
        }
    });
    updateFloorplanDetails();
    itemViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            selectedItem = ((IStructuredSelection) event.getSelection()).getFirstElement();
            updateFloorplanDetails();
            floorplan.redraw();
        }
    });
    itemViewer.setSelection(new StructuredSelection(current));

}