Package org.apache.uima.ruta.ide.debug.ui.launchConfiguration

Source Code of org.apache.uima.ruta.ide.debug.ui.launchConfiguration.RutaMainLaunchConfigurationTab

/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements.  See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership.  The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License.  You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied.  See the License for the
* specific language governing permissions and limitations
* under the License.
*/

package org.apache.uima.ruta.ide.debug.ui.launchConfiguration;

import org.apache.uima.cas.CAS;
import org.apache.uima.ruta.ide.RutaIdeUIPlugin;
import org.apache.uima.ruta.ide.core.RutaNature;
import org.apache.uima.ruta.ide.core.builder.RutaProjectUtils;
import org.apache.uima.ruta.ide.launching.RutaLaunchConstants;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
import org.eclipse.dltk.core.IScriptProject;
import org.eclipse.dltk.core.PreferencesLookupDelegate;
import org.eclipse.dltk.debug.core.DLTKDebugPreferenceConstants;
import org.eclipse.dltk.debug.ui.launchConfigurations.MainLaunchConfigurationTab;
import org.eclipse.dltk.launching.AbstractScriptLaunchConfigurationDelegate;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.dialogs.ContainerSelectionDialog;
import org.eclipse.ui.dialogs.ElementTreeSelectionDialog;
import org.eclipse.ui.model.WorkbenchContentProvider;
import org.eclipse.ui.model.WorkbenchLabelProvider;

public class RutaMainLaunchConfigurationTab extends MainLaunchConfigurationTab {

  private Text inputText;

  private Button recursivelyButton;

  private Text outputFolderText;

  private Text viewText;

  public RutaMainLaunchConfigurationTab(String mode) {
    super(mode);
  }

  /*
   * @seeorg.eclipse.dltk.debug.ui.launchConfigurations.ScriptLaunchConfigurationTab#
   * breakOnFirstLinePrefEnabled(org.eclipse.dltk.core.PreferencesLookupDelegate)
   */
  @Override
  protected boolean breakOnFirstLinePrefEnabled(PreferencesLookupDelegate delegate) {
    return delegate.getBoolean(RutaIdeUIPlugin.PLUGIN_ID,
            DLTKDebugPreferenceConstants.PREF_DBGP_BREAK_ON_FIRST_LINE);
  }

  /*
   * @see
   * org.eclipse.dltk.debug.ui.launchConfigurations.ScriptLaunchConfigurationTab#dbpgLoggingPrefEnabled
   * (org.eclipse.dltk.core.PreferencesLookupDelegate)
   */
  @Override
  protected boolean dbpgLoggingPrefEnabled(PreferencesLookupDelegate delegate) {
    return delegate.getBoolean(RutaIdeUIPlugin.PLUGIN_ID,
            DLTKDebugPreferenceConstants.PREF_DBGP_ENABLE_LOGGING);
  }

  @Override
  public String getNatureID() {
    return RutaNature.NATURE_ID;
  }

  @Override
  protected void doCreateControl(Composite composite) {
    super.doCreateControl(composite);
    // Input Resource Group
    Group inputResourceGroup = new Group(composite, SWT.None);
    inputResourceGroup.setText("Input Folder:");

    GridDataFactory.swtDefaults().align(SWT.FILL, SWT.CENTER).grab(true, false)
            .applyTo(inputResourceGroup);

    GridLayout inputResourceGroupLayout = new GridLayout(4, false);
    inputResourceGroup.setLayout(inputResourceGroupLayout);

    inputText = new Text(inputResourceGroup, SWT.BORDER);
    GridDataFactory.swtDefaults().align(SWT.FILL, SWT.CENTER).grab(true, false).span(3, 1)
            .applyTo(inputText);
    inputText.addModifyListener(new ModifyListener() {

      public void modifyText(ModifyEvent event) {
        updateLaunchConfigurationDialog();
      }
    });
    Button browseInputResource = new Button(inputResourceGroup, SWT.NONE);
    browseInputResource.setText("Browse ...");
    browseInputResource.addSelectionListener(new SelectionAdapter() {
      public void widgetSelected(SelectionEvent e) {
        ElementTreeSelectionDialog dialog = new ElementTreeSelectionDialog(getShell(),
                new WorkbenchLabelProvider(), new WorkbenchContentProvider());
        dialog.setTitle("Select input folder");
        dialog.setMessage("Select input folder");

        dialog.setInput(getProject().getProject());
        dialog.setInitialSelection(getWorkspaceRoot().findMember(inputText.getText()));
        if (dialog.open() == IDialogConstants.OK_ID) {
          IResource resource = (IResource) dialog.getFirstResult();
          if (resource != null) {
            String fileLoc = resource.getFullPath().toString();
            inputText.setText(fileLoc);
          }
        }
      }
    });

    recursivelyButton = new Button(inputResourceGroup, SWT.CHECK);
    recursivelyButton.setText("Recursively");
    GridDataFactory.swtDefaults().align(SWT.FILL, SWT.CENTER).grab(true, false)
            .applyTo(recursivelyButton);
    recursivelyButton.addSelectionListener(new SelectionListener() {

      public void widgetSelected(SelectionEvent event) {
        updateLaunchConfigurationDialog();
      }

      public void widgetDefaultSelected(SelectionEvent event) {
      }
    });

    Label viewLabel = new Label(inputResourceGroup, SWT.NONE);
    viewLabel.setText("View Name:");
    viewText = new Text(inputResourceGroup, SWT.BORDER);
    GridDataFactory.swtDefaults().hint(250, SWT.DEFAULT).align(SWT.LEFT, SWT.CENTER)
            .grab(true, false).applyTo(viewText);
    viewText.addModifyListener(new ModifyListener() {
      public void modifyText(ModifyEvent event) {
        updateLaunchConfigurationDialog();
      }
    });

    Group outputFolderGroup = new Group(composite, SWT.None);
    outputFolderGroup.setText("Output Folder:");
    GridDataFactory.swtDefaults().align(SWT.FILL, SWT.CENTER).grab(true, false)
            .applyTo(outputFolderGroup);
    GridLayout outputFolderGroupLayout = new GridLayout(2, false);
    outputFolderGroup.setLayout(outputFolderGroupLayout);
    outputFolderText = new Text(outputFolderGroup, SWT.BORDER);
    GridDataFactory.swtDefaults().align(SWT.FILL, SWT.CENTER).grab(true, false)
            .applyTo(outputFolderText);
    outputFolderText.addModifyListener(new ModifyListener() {

      public void modifyText(ModifyEvent event) {
        updateLaunchConfigurationDialog();
      }
    });

    Button browseOutputFolderButton = new Button(outputFolderGroup, SWT.NONE);
    browseOutputFolderButton.setText("Browse ...");
    browseOutputFolderButton.addSelectionListener(new SelectionAdapter() {
      public void widgetSelected(SelectionEvent e) {
        String currentContainerString = outputFolderText.getText();
        IContainer currentContainer = getContainer(currentContainerString);
        ContainerSelectionDialog dialog = new ContainerSelectionDialog(getShell(),
                currentContainer, false, "Select output folder");
        dialog.showClosedProjects(false);
        dialog.open();
        Object[] results = dialog.getResult();
        if ((results != null) && (results.length > 0) && (results[0] instanceof IPath)) {
          IPath path = (IPath) results[0];
          String containerName = path.toOSString();
          outputFolderText.setText(containerName);
        }
      }
    });

  }

  private IContainer getContainer(String path) {
    Path containerPath = new Path(path);
    IResource resource = getWorkspaceRoot().findMember(containerPath);
    if (resource instanceof IContainer)
      return (IContainer) resource;

    return null;
  }

  @Override
  public void doInitializeForm(ILaunchConfiguration config) {
    super.doInitializeForm(config);

    IScriptProject proj = null;
    try {
      proj = AbstractScriptLaunchConfigurationDelegate.getScriptProject(config);
    } catch (CoreException e) {
      RutaIdeUIPlugin.error(e);
    }
    String defaultInputLocation = RutaProjectUtils.getDefaultInputLocation();
    String defaultOutputLocation = RutaProjectUtils.getDefaultOutputLocation();
    IResource inputFolder = proj.getProject().findMember(defaultInputLocation);
    IResource outputFolder = proj.getProject().findMember(defaultOutputLocation);

    try {
      recursivelyButton.setSelection(config.getAttribute(RutaLaunchConstants.RECURSIVE, false));
    } catch (CoreException e) {
      recursivelyButton.setSelection(false);
    }

    try {
      viewText.setText(config.getAttribute(RutaLaunchConstants.VIEW, CAS.NAME_DEFAULT_SOFA));
    } catch (CoreException e) {
      viewText.setText(CAS.NAME_DEFAULT_SOFA);
    }

    try {
      inputText.setText(config.getAttribute(RutaLaunchConstants.INPUT_FOLDER, inputFolder
              .getFullPath().toPortableString()));
    } catch (CoreException e) {
      inputText.setText(inputFolder.getFullPath().toPortableString());
    }

    try {
      outputFolderText.setText(config.getAttribute(RutaLaunchConstants.OUTPUT_FOLDER, outputFolder
              .getFullPath().toPortableString()));
    } catch (CoreException e) {
      outputFolderText.setText(outputFolder.getFullPath().toPortableString());
    }

  }

  @Override
  public void doPerformApply(ILaunchConfigurationWorkingCopy config) {
    super.doPerformApply(config);

    config.setAttribute(RutaLaunchConstants.RECURSIVE, recursivelyButton.getSelection());
    config.setAttribute(RutaLaunchConstants.VIEW, viewText.getText());
    config.setAttribute(RutaLaunchConstants.INPUT_FOLDER, inputText.getText());
    config.setAttribute(RutaLaunchConstants.OUTPUT_FOLDER, outputFolderText.getText());

  }

  @Override
  public void setDefaults(ILaunchConfigurationWorkingCopy config) {
    super.setDefaults(config);
    IScriptProject proj = null;
    try {
      proj = AbstractScriptLaunchConfigurationDelegate.getScriptProject(config);
    } catch (CoreException e) {
      RutaIdeUIPlugin.error(e);
    }
    String defaultInputLocation = RutaProjectUtils.getDefaultInputLocation();
    String defaultOutputLocation = RutaProjectUtils.getDefaultOutputLocation();
    IResource inputFolder = proj.getProject().findMember(defaultInputLocation);
    IResource outputFolder = proj.getProject().findMember(defaultOutputLocation);
    config.setAttribute(RutaLaunchConstants.RECURSIVE, false);
    config.setAttribute(RutaLaunchConstants.INPUT_FOLDER, inputFolder.getFullPath()
            .toPortableString());
    config.setAttribute(RutaLaunchConstants.OUTPUT_FOLDER, outputFolder.getFullPath()
            .toPortableString());
  }
}
TOP

Related Classes of org.apache.uima.ruta.ide.debug.ui.launchConfiguration.RutaMainLaunchConfigurationTab

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.