blob: 61b3551a321f1e7ad3c57cdd2a92053e1ab8c1d4 [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.graphics.Point;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableItem;
import org.apache.uima.taeconfigurator.editors.ui.AbstractSection;
import org.apache.uima.taeconfigurator.editors.ui.Utility;
public abstract class AbstractDialogMultiColTable extends AbstractDialog {
protected String checkedIndicator(int col) {
if (col == 1)
return "In";
else
return "Out";
}
protected static final String UNCHECKED = "";
Table table;
protected boolean enableCol1 = true;
protected boolean enableCol2 = true;
protected int numberChecked = 0;
protected AbstractDialogMultiColTable(AbstractSection aSection, String title, String description) {
super(aSection, title, description);
}
public void handleEvent(Event event) {
if (event.type == SWT.MouseDown && event.widget == table) {
Point mousePosition = new Point(event.x, event.y);
TableItem item = table.getItem(mousePosition);
if (null == item) {
jitHowTo();
return;
}
int col = getHitColumn(item, mousePosition);
if (col != 1 && col != 2) {
jitHowTo();
return;
}
if (col == 1 && !enableCol1) {
setErrorMessage("This resource can't be marked as input");
return;
}
if (col == 2 && !enableCol2) {
setErrorMessage("This resource can't be marked as output");
return;
}
errorMessageUI.setText("");
toggleValue(item, col);
}
super.handleEvent(event);
}
private void jitHowTo() {
Utility.popMessage("Where to mouse click",
"Please click the mouse in the input or output columns to toggle the selection.",
MessageDialog.INFORMATION);
}
protected void toggleValue(TableItem item, int col) {
item.setText(col, item.getText(col).equals(checkedIndicator(col)) ? UNCHECKED
: checkedIndicator(col));
if (item.getText(col).equals(checkedIndicator(col)))
numberChecked++;
else
numberChecked--;
}
public boolean isValid() {
return true;
}
public void enableOK() {
errorMessageUI.setText("");
okButton.setEnabled(numberChecked > 0);
}
protected void setChecked(TableItem item, int col, boolean value) {
boolean prevChecked = checkedIndicator(col).equals(item.getText(col));
item.setText(col, value ? checkedIndicator(col) : UNCHECKED);
if (value && !prevChecked)
numberChecked++;
else if (!value && prevChecked)
numberChecked--;
}
}