コード例 #1
0
 /** Reverses the actions of {@link JobDoneListener#scheduled(IJobChangeEvent)} */
 @Override
 public void done(final IJobChangeEvent event) {
   if (event.getResult() == Status.OK_STATUS || event.getResult() == Status.CANCEL_STATUS) {
     UIJob refreshJob =
         new UIJob(REFRESH_STATISTICS_VIEW) {
           @Override
           public IStatus runInUIThread(IProgressMonitor monitor) {
             Job job = event.getJob();
             if (job instanceof ITreeJob) {
               final LongRunningJob<?> treeJob = (LongRunningJob<?>) job;
               LongRunningMethod<?> method = treeJob.getMethod();
               final boolean expand =
                   (method instanceof StatisticTreeJob) && ((StatisticTreeJob) method).isExpand();
               runningJobs.remove(treeJob);
               final Parent calc = ((TreeJob) method).getCalculated();
               calc.startCalculating(false);
               checkViews();
               synchronized (views) {
                 for (TreeViewer view : views) {
                   view.refresh(calc);
                   if (expand) {
                     view.expandToLevel(calc, 1);
                   }
                 }
               }
             }
             return Status.OK_STATUS;
           }
         };
     refreshJob.setPriority(Job.INTERACTIVE);
     refreshJob.schedule();
   }
 }
コード例 #2
0
 @Override
 public boolean prepareDecoration(Object element, String originalText) {
   final IFile f = (IFile) element;
   if (isImageFile(f)) {
     if (images.containsKey(f)) {
       return true;
     } else {
       final Display d = Display.getDefault();
       UIJob prepareImage =
           new UIJob(d, "prepare Image") {
             @Override
             public IStatus runInUIThread(IProgressMonitor monitor) {
               try {
                 images.put(f, prepareImage(d, f));
                 LabelProviderChangedEvent event =
                     new LabelProviderChangedEvent(ImagePreviewDecorator.this, f);
                 for (ILabelProviderListener x : listeners) {
                   x.labelProviderChanged(event);
                 }
                 return Status.OK_STATUS;
               } catch (CoreException e) {
                 return new Status(
                     IStatus.ERROR, Activator.PLUGIN_ID, "failed to load image preview", e);
               }
             }
           };
       prepareImage.setPriority(Job.DECORATE);
       prepareImage.schedule();
     }
     return false;
   }
   return true;
 }
コード例 #3
0
 /**
  * Adds the scheduled job to the list of running jobs and gives the user optical feedback that the
  * requested node is being calculated.
  */
 @Override
 public void scheduled(final IJobChangeEvent event) {
   UIJob refreshJob =
       new UIJob(REFRESH_STATISTICS_VIEW) {
         @Override
         public IStatus runInUIThread(IProgressMonitor monitor) {
           Job job = event.getJob();
           if (job instanceof ITreeJob) {
             final LongRunningJob<?> treeJob = (LongRunningJob<?>) job;
             runningJobs.add(treeJob);
             Parent calc = ((TreeJob) treeJob.getMethod()).getCalculated();
             calc.startCalculating(true);
             checkViews();
             synchronized (views) {
               for (TreeViewer view : views) {
                 view.refresh(calc);
               }
             }
           }
           return Status.OK_STATUS;
         }
       };
   refreshJob.setPriority(Job.INTERACTIVE);
   refreshJob.schedule();
 }
コード例 #4
0
    /** As soon as the reparse is done, this method is called to actually make the rename. */
    public void parserChanged(ISimpleNode root, IAdaptable file, IDocument doc) {
      pyEdit.getParser().removeParseListener(this); // we'll only listen for this single parse

      /**
       * Create an ui job to actually make the rename (otherwise we can't make ui.enter() nor create
       * a PySelection.)
       */
      UIJob job =
          new UIJob("Rename") {

            @Override
            public IStatus runInUIThread(IProgressMonitor monitor) {
              try {
                ISourceViewer viewer = pyEdit.getPySourceViewer();
                IDocument document = viewer.getDocument();
                PySelection ps = new PySelection(pyEdit);
                LinkedPositionGroup group = new LinkedPositionGroup();

                if (!fillWithOccurrences(document, group, new NullProgressMonitor(), ps)) {
                  return Status.OK_STATUS;
                }

                if (group.isEmpty()) {
                  return Status.OK_STATUS;
                }

                LinkedModeModel model = new LinkedModeModel();
                model.addGroup(group);
                if (model.tryInstall() && model.getTabStopSequence().size() > 0) {
                  final LinkedModeUI ui = new EditorLinkedModeUI(model, viewer);
                  Tuple<String, Integer> currToken = ps.getCurrToken();
                  ui.setCyclingMode(LinkedModeUI.CYCLE_ALWAYS);
                  ui.setExitPosition(
                      viewer,
                      currToken.o2 + currToken.o1.length(),
                      0,
                      0 /*ordered so that 0 is current pos*/);
                  ui.enter();
                }
              } catch (BadLocationException e) {
                Log.log(e);
              } catch (Throwable e) {
                Log.log(e);
              }
              return Status.OK_STATUS;
            }
          };
      job.setPriority(Job.INTERACTIVE);
      job.schedule();
    }
コード例 #5
0
 private static void showErrorMessage(
     final String title, final String message, final Throwable exception) {
   if (Display.getCurrent() == null || exception != null) {
     UIJob job =
         new UIJob(message) {
           @Override
           public IStatus runInUIThread(IProgressMonitor monitor) {
             if (exception == null) {
               showErrorDialog(title, message);
               return Status.OK_STATUS;
             }
             return new Status(IStatus.ERROR, UIPlugin.PLUGIN_ID, null, exception);
           }
         };
     job.setPriority(Job.INTERACTIVE);
     job.setUser(true);
     job.schedule();
   } else {
     showErrorDialog(title, message);
   }
 }
コード例 #6
0
 public static boolean showPromptDialog(final String title, final String message) {
   if (Display.getCurrent() == null) {
     UIJob job =
         new UIJob(title) {
           @Override
           public IStatus runInUIThread(IProgressMonitor monitor) {
             if (showPromptDialogUI(title, message)) {
               return Status.OK_STATUS;
             }
             return Status.CANCEL_STATUS;
           }
         };
     job.setPriority(Job.INTERACTIVE);
     job.setUser(true);
     job.schedule();
     try {
       job.join();
     } catch (InterruptedException e) {
     }
     return job.getResult() == Status.OK_STATUS;
   } else {
     return showPromptDialogUI(title, message);
   }
 }
コード例 #7
0
  private void setGrammarEditor(IWorkbenchPart activeEditor) {
    if (featureModelEditor == activeEditor) return;

    if (featureModelEditor != null) {
      featureModelEditor.getOriginalFeatureModel().removeListener(modelListener);
      featureModelEditor.getFeatureModel().removeListener(modelListener);
      featureModelEditor = null;
    }

    if (activeEditor instanceof FeatureModelEditor) {
      featureModelEditor = (FeatureModelEditor) activeEditor;
      featureModelEditor.getOriginalFeatureModel().addListener(modelListener);
      featureModelEditor.getFeatureModel().addListener(modelListener);

      if (evaluation == null
          && featureModelEditor != null
          && featureModelEditor
              .getGrammarFile()
              .getResource()
              .getProject()
              .getName()
              .startsWith("EvaluationTest")) {
        evaluation =
            new Job("Evaluation Test") {
              @Override
              protected IStatus run(IProgressMonitor monitor) {
                Evaluation.evaluate(featureModelEditor.getGrammarFile().getResource().getProject());
                return Status.OK_STATUS;
              }
            };
        evaluation.setPriority(Job.LONG);
        evaluation.schedule();
        UIJob conversion =
            new UIJob("Converting Feature Models") {
              @Override
              public IStatus runInUIThread(IProgressMonitor monitor) {
                try {
                  convertModelToBitmapTest(
                      featureModelEditor
                          .getGrammarFile()
                          .getResource()
                          .getProject()
                          .getFolder("models"));
                } catch (Exception e) {
                  e.printStackTrace();
                }
                return Status.OK_STATUS;
              }

              public void convertModelToBitmapTest(IFolder folder) throws CoreException {
                for (IResource res : folder.members())
                  if (res instanceof IFile && res.getName().endsWith(".m")) {
                    IFile fmFile = (IFile) res;
                    try {
                      FeatureModel fm = new FeatureModel();
                      FeatureModelReader reader = new FeatureModelReader(fm);
                      reader.readFromFile(fmFile);

                      String imageName = fmFile.getRawLocation().toOSString();
                      imageName =
                          imageName.substring(0, imageName.length() - ".m".length()) + ".png";
                      createBitmap(fm, new File(imageName));
                    } catch (FileNotFoundException e) {
                      e.printStackTrace();
                    } catch (UnsupportedModelException e) {
                      e.printStackTrace();
                    }
                  }
                folder.refreshLocal(IResource.DEPTH_ONE, null);
              }

              private void createBitmap(FeatureModel featureModel, File file) {
                GraphicalViewerImpl graphicalViewer = new ScrollingGraphicalViewer();
                graphicalViewer.createControl(viewer.getControl().getParent());
                graphicalViewer.getControl().setBackground(GUIDefaults.DIAGRAM_BACKGROUND);
                graphicalViewer.setEditPartFactory(new GraphicalEditPartFactory());
                ScalableFreeformRootEditPart rootEditPart = new ScalableFreeformRootEditPart();
                ((ConnectionLayer) rootEditPart.getLayer(LayerConstants.CONNECTION_LAYER))
                    .setAntialias(SWT.ON);
                graphicalViewer.setRootEditPart(rootEditPart);
                graphicalViewer.setContents(featureModel);
                FeatureDiagramLayoutManager layoutManager = new LevelOrderLayout();
                layoutManager.layout(featureModel);
                GEFImageWriter.writeToFile(graphicalViewer, file);
              }
            };
        conversion.setPriority(Job.LONG);
        conversion.schedule();
      }
    }

    refresh();
  }