blob: d130141fa0f51c3dca7d510ee3a19892e54603a7 [file] [log] [blame]
/*
* 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.taeconfigurator.editors.ui.dialogs;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.events.VerifyEvent;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Text;
import org.apache.uima.resource.ExternalResourceDescription;
import org.apache.uima.resource.FileLanguageResourceSpecifier;
import org.apache.uima.resource.FileResourceSpecifier;
import org.apache.uima.resource.ResourceSpecifier;
import org.apache.uima.taeconfigurator.editors.ui.AbstractSection;
import org.apache.uima.taeconfigurator.editors.ui.ExtnlResBindSection;
import org.apache.uima.taeconfigurator.editors.ui.Utility;
public class AddExternalResourceDialog extends AbstractDialogKeyVerify {
private ExternalResourceDescription existingXRD = null;
private StyledText xrNameUI;
private String originalXrName;
private Text xrDescriptionUI;
private StyledText xrUrlUI;
private StyledText xrUrlSuffixUI;
private StyledText xrImplementationUI;
private ExtnlResBindSection extnlResBindSection;
public String xrName;
public String xrDescription;
public String xrUrl;
public String xrUrlSuffix;
public String xrImplementation;
public AddExternalResourceDialog(AbstractSection aSection) {
super(aSection, "Add an External Resource Definition", "Define and name an external resource");
extnlResBindSection = (ExtnlResBindSection) aSection;
}
public AddExternalResourceDialog(AbstractSection aSection,
ExternalResourceDescription aExistingXRD) {
this(aSection);
existingXRD = aExistingXRD;
originalXrName = existingXRD.getName();
}
protected Control createDialogArea(Composite parent) {
Composite composite = (Composite) super.createDialogArea(parent, existingXRD);
// name: styledText name
// description: Text multi-line
// URL or
// URL_Prefix: styledText URL
// (optional)
//
// URL_Suffix: styledText URL_Suffix
// (optional)
//
// Implementation: styledText
// (optional)
createWideLabel(
composite,
"The first URL field is used to identify the external resource.\nIf both URL fields are used, they form a name by concatenating the first with the document language and then with the second (suffix) URL.\nThe (optional) Implementation specifies a Java class which implements the interface used by the Analysis Engine to access the resource.");
Composite twoCol = new2ColumnComposite(composite);
xrNameUI = newLabeledSingleLineStyledText(twoCol, "Name:",
"(Required) The name of this resource; it must be unique in this Analysis Engine.");
xrDescriptionUI = newDescription(twoCol, "(Optional) Description of the External Resource");
xrUrlUI = newLabeledSingleLineStyledText(twoCol, "URL:",
"(Required) A URL for this resource, or the URL prefix if a suffix is being used");
xrUrlSuffixUI = newLabeledSingleLineStyledText(
twoCol,
"URL Suffix",
"(Optional) A URL part that will be suffixed to the prefix with the language being used inserted in-between");
xrImplementationUI = newLabeledSingleLineStyledText(
twoCol,
"Implementation",
"(Optional) The name of a Java class implementing the interface used by the Analysis Engine to access this resource.");
newErrorMessage(twoCol, 2);
if (null != existingXRD) {
xrNameUI.setText(existingXRD.getName());
xrDescriptionUI.setText(convertNull(existingXRD.getDescription()));
ResourceSpecifier rs = existingXRD.getResourceSpecifier();
if (rs instanceof FileResourceSpecifier)
xrUrlUI.setText(((FileResourceSpecifier) rs).getFileUrl());
else if (rs instanceof FileLanguageResourceSpecifier) {
xrUrlUI.setText(((FileLanguageResourceSpecifier) rs).getFileUrlPrefix());
xrUrlSuffixUI.setText(((FileLanguageResourceSpecifier) rs).getFileUrlSuffix());
} else {
Utility.popMessage("Unknown resource type", "The resource type '" + rs.getClass().getName()
+ "' is unknown. Editing should be done by hand in the source view.",
MessageDialog.WARNING);
}
String impName = existingXRD.getImplementationName();
xrImplementationUI.setText(convertNull(impName));
}
return composite;
}
public void copyValuesFromGUI() {
xrName = xrNameUI.getText();
xrDescription = nullIf0lengthString(xrDescriptionUI.getText());
xrUrl = xrUrlUI.getText();
xrUrlSuffix = nullIf0lengthString(xrUrlSuffixUI.getText());
xrImplementation = nullIf0lengthString(xrImplementationUI.getText());
}
/**
* Called for many widgets
*/
public boolean verifyKeyChecks(VerifyEvent event) {
if (event.keyCode == SWT.CR || event.keyCode == SWT.TAB)
return true;
if (Character.isJavaIdentifierPart(event.character) || event.character == '.')
return true;
if ((event.widget == xrUrlUI || event.widget == xrUrlSuffixUI)
&& (event.character == '/' || event.character == ':'))
return true;
return false;
}
public boolean isValid() {
if (xrName.length() == 0)
return false;
if (!xrName.equals(originalXrName) && extnlResBindSection.resourceNameAlreadyDefined(xrName))
return false;
if (xrUrl.length() == 0)
return false;
return true;
}
public void enableOK() {
copyValuesFromGUI();
okButton.setEnabled(xrName.length() > 0 && xrUrl.length() > 0);
}
}