public void createPartControl()

in caseditor-corpus-server-plugin/src/main/java/org/apache/opennlp/corpus_server/caseditor/TaskQueueView.java [60:183]


  public void createPartControl(Composite parent) {

    Composite explorerComposite = new Composite(parent, SWT.NONE);
    GridLayout explorerLayout = new GridLayout();
    explorerLayout.numColumns = 2;
    explorerComposite.setLayout(explorerLayout);

    // URL field to connect to corpus server and corpus
    Label serverLabel = new Label(explorerComposite, SWT.NONE);
    serverLabel.setText("Server:");

    serverUrl = new Text(explorerComposite, SWT.BORDER);
    GridDataFactory.swtDefaults().align(SWT.FILL, SWT.CENTER).grab(true, false)
        .applyTo(serverUrl);
    
    // TODO: Should be stored in some way, or just done more sophisticated ..
    serverUrl.setText("http://localhost:8080/corpus-server/rest/queues/ObamaNerTask");
    
    // Button for next cas (gets next and closes current one,
    // if not saved user is asked for it)
    Button nextDocument = new Button(explorerComposite, SWT.BORDER);
    nextDocument.setText("Next");
    GridDataFactory.swtDefaults().span(2, 1).align(SWT.FILL, SWT.CENTER)
        .grab(true, false).applyTo(nextDocument);
    
    nextDocument.addSelectionListener(new SelectionListener() {

      @Override
      public void widgetSelected(SelectionEvent event) {

        Client c = ClientBuilder.newClient();
        WebTarget queueWebResource = c.target(serverUrl.getText());

        Response response2 = queueWebResource
            .path("_nextTask")
            .request(MediaType.APPLICATION_JSON)
            .header("Content-Type", MediaType.TEXT_XML)
            .get();

        String casId = response2.readEntity(String.class);
        
        // How to get the corpus uri for the item returned from the queue ???
        // Queue could always return full URI ...
        
        // we also need to corpus the cas id belongs too ...
        IWorkbenchPage page = TaskQueueView.this.getSite().getPage();
        
        // TODO: That's a short cut, we need to make this work properly ...
        IEditorInput input = new CorpusServerCasEditorInput(
            "http://localhost:8080/corpus-server/rest/corpora/wikinews", casId);

        try {
          page.openEditor(input, "org.apache.uima.caseditor.editor");
        } catch (PartInitException e) {
          e.printStackTrace();
        }
        
        // Add casId to historyViewer ... should be inserted at the top, not bottom.
        
        lastInputElements.add(input);
        historyViewer.insert(input, 0);
        
        if (lastInputElements.size() > 10) {
          IEditorInput tooOldInput = lastInputElements.remove(0);
          historyViewer.remove(tooOldInput);
        }
      }

      @Override
      public void widgetDefaultSelected(SelectionEvent event) {
      }
    });
    
    // History view ... shows n last opened CASes ...
    historyViewer = new TableViewer(explorerComposite);
    historyViewer.setLabelProvider(new ITableLabelProvider() {

      @Override
      public void addListener(ILabelProviderListener arg0) {
      }

      @Override
      public void dispose() {
      }

      @Override
      public boolean isLabelProperty(Object arg0, String arg1) {
        return false;
      }

      @Override
      public void removeListener(ILabelProviderListener arg0) {
      }

      @Override
      public Image getColumnImage(Object arg0, int arg1) {
        return null;
      }

      @Override
      public String getColumnText(Object arg0, int arg1) {
        return ((IEditorInput) arg0).getName();
      }});
    
      GridDataFactory.swtDefaults().align(SWT.FILL, SWT.FILL).grab(true, true)
        .span(2, 1).applyTo(historyViewer.getTable());
    
      historyViewer.addOpenListener(event -> {

        StructuredSelection selection = (StructuredSelection) event.getSelection();

        if (!selection.isEmpty()) {
          IWorkbenchPage page = TaskQueueView.this.getSite().getPage();

          IEditorInput input = (IEditorInput) selection.getFirstElement();

          try {
            page.openEditor(input, "org.apache.uima.caseditor.editor");
          } catch (PartInitException e) {
            e.printStackTrace();
          }
        }
      });
  }