Action verwerk systeem grotendeels herschreven met als doelen:

- duplicate code vermijden (Main en Application extenden de ActionListener)
- naamgeving duidelijker maken (oude ActionListener heet nu ActionProvider)
- omslachtige gedoe met via reflectie opvragen van methode fixen (switch statements)
- mogelijkheid tot langere dan instantane actions (ActionListener zijn threads)

Het is noodzakelijk om het volgende op orde te brengen:
- omslachtige target systeem
- statussen en logs om debuggen en controle eenvoudig te maken
- mogelijkheid tot repeterende acties
This commit is contained in:
2011-02-11 16:09:29 +00:00
parent 2ae8d8201e
commit c25e293c85
16 changed files with 246 additions and 374 deletions

View File

@@ -1,11 +1,5 @@
package pm;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import pm.exception.ActionException;
import pm.exception.action.InvokeActionException;
import pm.exception.action.NotImplementedActionException;
import pm.exception.action.TargetNotSetException;
public enum Action {
@@ -21,7 +15,7 @@ public enum Action {
REWIND ("rewind"),
MUTE ("mute"),
VOLUME_UP ("volumeUp"),
VULUME_DOWN ("volumeDown");
VOLUME_DOWN ("volumeDown");
protected String action;
@@ -42,27 +36,4 @@ public enum Action {
}
return target;
}
public Method getMethod(Object object) throws NotImplementedActionException {
try {
return object.getClass().getMethod(action);
} catch (SecurityException e) {
} catch (NoSuchMethodException e) {}
throw new NotImplementedActionException();
}
public void invoke(Object object) throws ActionException {
try {
getMethod(object).invoke(object);
return;
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
throw new InvokeActionException();
// Todo: informatie doorgeven over wat er precies is foutgegaan
}
}