/*******************************************************************************
* Copyright (c) 2006-2010, G. Weirich and Elexis
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* G. Weirich - initial implementation
*
*******************************************************************************/
package ch.elexis.core.ui.text;
import java.util.ArrayList;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.events.KeyListener;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.events.VerifyListener;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.Widget;
import ch.elexis.core.ui.actions.ScannerEvents;
import ch.elexis.core.ui.util.IScannerListener;
/**
* An org.eclipse.swt.widgets.Text decorator, implementing IScannerListener
*
* @author gerry
*
*/
public class ElexisText implements IScannerListener, DisposeListener {
final ArrayList<IScannerListener> scannerListener;
final Text text;
public ElexisText(Text text){
this.text = text;
this.scannerListener = new ArrayList<IScannerListener>();
this.text.addDisposeListener(this);
}
public Widget getWidget(){
return this.text;
}
public void widgetDisposed(DisposeEvent e){
ScannerEvents.getInstance().removeScannerListener(this);
}
public ElexisText(Composite parent, int style){
this(new Text(parent, style));
}
public void addKeyListener(KeyListener listener){
text.addKeyListener(listener);
}
public void addModifyListener(ModifyListener listener){
text.addModifyListener(listener);
}
public void addSelectionListener(SelectionListener listener){
text.addSelectionListener(listener);
}
public void addVerifyListener(VerifyListener listener){
text.addVerifyListener(listener);
}
public void addScannerListener(IScannerListener listener){
if (scannerListener.size() == 0) {
ScannerEvents.getInstance().addScannerListener(this);
}
scannerListener.add(listener);
}
public void removeScannerListener(IScannerListener listener){
scannerListener.remove(listener);
}
public void scannerInput(Event e){
if (e.widget == text) {
fireScannerEvent(e);
}
}
public void fireScannerEvent(Event e){
for (IScannerListener listener : scannerListener) {
listener.scannerInput(e);
}
}
public void append(String string){
text.append(string);
}
public void clearSelection(){
text.clearSelection();
}
public Point computeSize(int hint, int hint2, boolean changed){
return text.computeSize(hint, hint2, changed);
}
public Rectangle computeTrim(int x, int y, int width, int height){
return text.computeTrim(x, y, width, height);
}
public void copy(){
text.copy();
}
public void cut(){
text.cut();
}
public int getBorderWidth(){
return text.getBorderWidth();
}
public int getCaretLineNumber(){
return text.getCaretLineNumber();
}
public Point getCaretLocation(){
return text.getCaretLocation();
}
public int getCaretPosition(){
return text.getCaretPosition();
}
public int getCharCount(){
return text.getCharCount();
}
public boolean getDoubleClickEnabled(){
return text.getDoubleClickEnabled();
}
public char getEchoChar(){
return text.getEchoChar();
}
public boolean getEditable(){
return text.getEditable();
}
public int getLineCount(){
return text.getLineCount();
}
public String getLineDelimiter(){
return text.getLineDelimiter();
}
public int getLineHeight(){
return text.getLineHeight();
}
public String getMessage(){
return text.getMessage();
}
public int getOrientation(){
return text.getOrientation();
}
public Point getSelection(){
return text.getSelection();
}
public int getSelectionCount(){
return text.getSelectionCount();
}
public String getSelectionText(){
return text.getSelectionText();
}
public int getTabs(){
return text.getTabs();
}
public String getText(){
return text.getText();
}
public String getText(int start, int end){
return text.getText(start, end);
}
public int getTextLimit(){
return text.getTextLimit();
}
public int getTopIndex(){
return text.getTopIndex();
}
public int getTopPixel(){
return text.getTopPixel();
}
public void insert(String string){
text.insert(string);
}
public void paste(){
text.paste();
}
public void removeModifyListener(ModifyListener listener){
text.removeModifyListener(listener);
}
public void removeSelectionListener(SelectionListener listener){
text.removeSelectionListener(listener);
}
public void removeVerifyListener(VerifyListener listener){
text.removeVerifyListener(listener);
}
public void removeKeyListener(KeyListener listener){
text.removeKeyListener(listener);
}
public void selectAll(){
text.selectAll();
}
public void setDoubleClickEnabled(boolean doubleClick){
text.setDoubleClickEnabled(doubleClick);
}
public void setEchoChar(char echo){
text.setEchoChar(echo);
}
public void setEditable(boolean editable){
text.setEditable(editable);
}
public void setFont(Font font){
text.setFont(font);
}
public void setMessage(String message){
text.setMessage(message);
}
public void setOrientation(int orientation){
text.setOrientation(orientation);
}
public void setRedraw(boolean redraw){
text.setRedraw(redraw);
}
public void setSelection(int start, int end){
text.setSelection(start, end);
}
public void setSelection(int start){
text.setSelection(start);
}
public void setSelection(Point selection){
text.setSelection(selection);
}
public void setTabs(int tabs){
text.setTabs(tabs);
}
public void setText(String string){
text.setText(string);
}
public void setTextLimit(int limit){
text.setTextLimit(limit);
}
public void setTopIndex(int index){
text.setTopIndex(index);
}
public void showSelection(){
text.showSelection();
}
public boolean setFocus(){
return text.setFocus();
}
public void setToolTipText(String string){
text.setToolTipText(string);
}
public void setLayoutData(Object layoutData){
text.setLayoutData(layoutData);
}
}