List of usage examples for org.eclipse.jface.viewers LabelProvider LabelProvider
public LabelProvider()
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)); }