コード例 #1
0
ファイル: CommonViewer.java プロジェクト: rgwch/elexis-3-core
  /**
   * 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;
  }
コード例 #2
0
ファイル: CommonViewer.java プロジェクト: rgwch/elexis-3-core
 public void dispose() {
   if (vc.getDoubleClickListener() != null)
     viewer.removeDoubleClickListener(vc.getDoubleClickListener());
   viewer.removeSelectionChangedListener(this);
 }