예제 #1
0
  public void createPartControl(Composite parent) {
    listener =
        new WorkbenchWindowListener(
            new WorkbenchPageListener(
                new PartListener(new DropTemplateWorkflowModelEditorAction())));
    listener.register();

    FillLayout parentLayout = new FillLayout();
    parent.setLayout(parentLayout);
    SashForm sashForm = new SashForm(parent, SWT.HORIZONTAL);

    Tree tree = new Tree(sashForm, SWT.BORDER);
    tree.setLinesVisible(false);
    tree.setLayoutData(FormBuilder.createDefaultMultiLineWidgetGridData());
    Composite composite = FormBuilder.createComposite(sashForm, 1);
    Composite swingComposite = new Composite(composite, SWT.EMBEDDED);
    swingComposite.setLayoutData(FormBuilder.createDefaultMultiLineWidgetGridData());
    java.awt.Frame locationFrame = SWT_AWT.new_Frame(swingComposite);
    textPane = new JTextPane();
    JScrollPane scrollPane = new JScrollPane(textPane);
    locationFrame.add(scrollPane);
    textPane.setContentType("text/html"); // $NON-NLS-1$
    StyleSheet css = ((HTMLEditorKit) textPane.getEditorKit()).getStyleSheet();
    URL url = this.getClass().getResource("/html/carnot.css"); // $NON-NLS-1$
    css.importStyleSheet(url);
    textPane.setEditable(false);
    sashForm.setWeights(new int[] {1, 2});
    final TreeViewer viewer = new TreeViewer(tree);
    viewer.setContentProvider(new PatternsContentProvider());
    viewer.setLabelProvider(new PatternsLabelProvider());
    viewer.addSelectionChangedListener(
        new ISelectionChangedListener() {

          public void selectionChanged(SelectionChangedEvent event) {
            TreeSelection selection = (TreeSelection) event.getSelection();
            Object object = selection.getFirstElement();
            if (object instanceof ITemplate) {
              ITemplate template = (ITemplate) object;
              textPane.setEditorKit(new ExtendedHTMLEditorKit(template));
              textPane.setText(template.getDescription());
            } else {
              if (object instanceof ITemplateFactory) {
                ITemplateFactory templateFactory = (ITemplateFactory) object;
                textPane.setText(templateFactory.getDescription());
              }
            }
          }
        });

    viewer.addDragSupport(
        DND.DROP_COPY,
        new Transfer[] {LocalSelectionTransfer.getTransfer()},
        new DragSourceAdapter() {
          public void dragStart(DragSourceEvent event) {
            ISelection selection = viewer.getSelection();
            LocalSelectionTransfer.getTransfer().setSelection(selection);
            LocalSelectionTransfer.getTransfer().setSelectionSetTime(event.time & 0xFFFFFFFFL);
            event.doit = DropTemplateWorkflowModelEditorAction.isValidDndSelection(selection);
          }

          public void dragSetData(DragSourceEvent event) {
            event.data = LocalSelectionTransfer.getTransfer().getSelection();
          }

          public void dragFinished(DragSourceEvent event) {
            LocalSelectionTransfer.getTransfer().setSelection(null);
            LocalSelectionTransfer.getTransfer().setSelectionSetTime(0);
          }
        });

    // Add actions to the local tool bar
    IToolBarManager tbm = getViewSite().getActionBars().getToolBarManager();
    Action refreshAction =
        new Action(Diagram_Messages.LB_VersionRepository_Refresh) {
          public void run() {
            viewer.setInput(
                "org.eclipse.stardust.modeling.templates.templateProvider"); //$NON-NLS-1$
          }
        };
    tbm.add(refreshAction);

    refreshAction.run();
  }
예제 #2
0
 public void dispose() {
   listener.unregister();
   listener = null;
   super.dispose();
 }