/** * Den Viewer erstellen * * @param c ViewerConfigurer, der die Funktionalität bereitstellt. Alle Felder des Configurers * müssen vor Aufruf von create() gültig gesetzt sein. * @param parent Parent.Komponente * @param style SWT-Stil für das umgebende Composite * @param input Input Objekt für den Viewer */ public void create(ViewerConfigurer c, Composite parent, int style, Object input) { vc = c; this.parent = parent; Composite ret = new Composite(parent, style); GridLayout layout = new GridLayout(); layout.marginHeight = 0; ret.setLayout(layout); if (parent.getLayout() instanceof GridLayout) { GridData gd = new GridData( GridData.GRAB_VERTICAL | GridData.FILL_VERTICAL | GridData.GRAB_HORIZONTAL | GridData.FILL_HORIZONTAL); ret.setLayoutData(gd); } ControlFieldProvider cfp = vc.getControlFieldProvider(); if (cfp != null) { Composite ctlf = vc.getControlFieldProvider().createControl(ret); ctlf.setLayoutData(SWTHelper.getFillGridData(1, true, 1, false)); } viewer = vc.getWidgetProvider().createViewer(ret); GridData gdView = new GridData( GridData.GRAB_HORIZONTAL | GridData.FILL_HORIZONTAL | GridData.GRAB_VERTICAL | GridData.FILL_VERTICAL); gdView.verticalAlignment = SWT.FILL; viewer.setUseHashlookup(true); viewer.getControl().setLayoutData(gdView); viewer.setContentProvider(vc.getContentProvider()); viewer.setLabelProvider(vc.getLabelProvider()); viewer.addSelectionChangedListener(this); if (vc.getDoubleClickListener() != null) { viewer.addDoubleClickListener(vc.getDoubleClickListener()); } bNew = vc.getButtonProvider().createButton(ret); if (bNew != null) { GridData gdNew = new GridData(GridData.GRAB_HORIZONTAL | GridData.FILL_HORIZONTAL); bNew.setLayoutData(gdNew); if (vc.getButtonProvider().isAlwaysEnabled() == false) { bNew.setEnabled(false); } } /* * 3 viewer.getControl().addMouseListener(new MouseAdapter(){ public void * mouseDoubleClick(MouseEvent e) { log.log("Doppelklick",Log.DEBUGMSG); * ctl.doubleClicked(getSelection()); }}); */ /* * viewer.addDragSupport(DND.DROP_COPY,new Transfer[] {TextTransfer.getInstance()}, */ new PersistentObjectDragSource( viewer.getControl(), new ISelectionRenderer() { public List<PersistentObject> getSelection() { Object[] sel = CommonViewer.this.getSelection(); ArrayList<PersistentObject> ret = new ArrayList<PersistentObject>(sel.length); for (Object o : sel) { if (o instanceof PersistentObject) { ret.add((PersistentObject) o); } else if (o instanceof Tree<?>) { Object b = ((Tree<?>) o).contents; if (b instanceof PersistentObject) { ret.add((PersistentObject) b); } } } return ret; } }); if (mgr != null) { viewer.getControl().setMenu(mgr.createContextMenu(viewer.getControl())); } vc.getContentProvider().init(); viewer.setInput(input); viewer.getControl().pack(); composite = ret; }
public void dispose() { if (vc.getDoubleClickListener() != null) viewer.removeDoubleClickListener(vc.getDoubleClickListener()); viewer.removeSelectionChangedListener(this); }