Hallo Ihr Lieben!
ja ich bins wieder mal mit einem Eigenproblem.
Folgende Situation:
Ich habe mir eine kl. Klasse gebaut, die mir sobald in der Zwischenablage was abgelegt wird, diesen Inhalt analysieret und gegebenenfalls ausgibt.
Nun zum Problem.
Manchmal kommt es vor, das das Tool überhaupt nichts tut und ich finde den Fehler nicht.
Hier mal der Code der Klasse(ohne imports):
..hab ich was übersehen?
Wäre nett wenn der/die Eine oder Andere mal nen Blick drauf werfen könnte.
lg
DocRandom
ja ich bins wieder mal mit einem Eigenproblem.
Folgende Situation:
Ich habe mir eine kl. Klasse gebaut, die mir sobald in der Zwischenablage was abgelegt wird, diesen Inhalt analysieret und gegebenenfalls ausgibt.
Nun zum Problem.
Manchmal kommt es vor, das das Tool überhaupt nichts tut und ich finde den Fehler nicht.
Hier mal der Code der Klasse(ohne imports):
Code:
public class ClipboardScanner implements FlavorListener, ClipboardOwner, AppConstantsIF {
private static ClipboardScanner instance;
private Toolkit tk;
private boolean active;
private MessageQueue messages = MessageQueue.getInstance();
public static synchronized ClipboardScanner getInstance() {
if (instance == null)
instance = new ClipboardScanner();
return instance;
}
/**
* privater Construktor, da Singleton
*/
private ClipboardScanner() {
tk = Toolkit.getDefaultToolkit();
this.active = false;
}
@Override
public void flavorsChanged(FlavorEvent e) {
if( active )
checkClipboard();
}
@Override
public void lostOwnership(Clipboard clipboard, Transferable contents) {
if ( active )
checkClipboard();
}
public boolean isActive() {
return active;
}
public void markClipboard() {
// Leerstring erzeugen
String empty = " ";
StringSelection ss = new StringSelection(empty);
tk.getSystemClipboard().setContents(ss, null);
}
public void startScanning() {
if ( !active ) {
tk.getSystemClipboard().addFlavorListener(this);
active = true;
}
}
public void stopScanning() {
if ( active ) {
tk.getSystemClipboard().removeFlavorListener(this);
active = false;
}
}
private void checkClipboard() {
// Daten von der Zwischenablage holen
Transferable transferData = tk.getSystemClipboard().getContents(null);
// Falls Daten als String verfuegbar
if (transferData.isDataFlavorSupported(DataFlavor.stringFlavor)) {
// Daten einlesen
try {
String data = (String)transferData.getTransferData(DataFlavor.stringFlavor);
MessagesFlags found = MessagesFlags.NONE;
// pruefe auf Universums-
if (data.contains(UNIVERSUM)) {
found = MessagesFlags.UNIVERSUM;
// Start -
} else if (data.contains(STATUS)) {
found = MessagesFlags.STATUS;
// Transport -
} else if (data.contains(TR_REPORT)) {
found = MessagesFlags.TRANSFER;
// Geologie -
} else if(data.contains(GE_REPORT)) {
found = MessagesFlags.GEOLOGIE;
// Ressourcen - Ubersicht
} else if (data.contains(RE_REPORT)) {
found = MessagesFlags.RESSOURCE;
}
// sind die Daten fuer uns interessant?
if (found != MessagesFlags.NONE) {
// ja, Daten in die MessageQueue uebertragen
Message msg = new Message(found, data);
messages.addElement(msg);
// markiere Clipboard, fuer eintrag geslesen
markClipboard();
}
} catch (UnsupportedFlavorException fex) {
String fexmsg = fex.getStackTrace().toString();
Message errmsg = new Message(MessagesFlags.SYSTEM, fexmsg);
messages.addElement(errmsg);
} catch (IOException ioex) {
String ioemsg = ER_IOEX + ioex.getStackTrace().toString();
Message errmsg = new Message(MessagesFlags.SYSTEM, ioemsg);
messages.addElement(errmsg);
}
}
}
}
Wäre nett wenn der/die Eine oder Andere mal nen Blick drauf werfen könnte.
lg
DocRandom