catch up with branch development
Signed-off-by: Ralf Mollik <ramollik@compex-commerce.com>
diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.abstractstatemachine.feature/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.abstractstatemachine.feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.abstractstatemachine.feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.abstractstatemachine.feature/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.abstractstatemachine.feature/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.abstractstatemachine.feature/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.abstractstatemachine.feature/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.abstractstatemachine.feature/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..19e3115
--- /dev/null
+++ b/org.eclipse.osbp.abstractstatemachine.feature/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,11 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+BuilderConfiguration.is_project_specific=true
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.abstractstatemachine/.settings/com.vaadin.integration.eclipse.prefs b/org.eclipse.osbp.abstractstatemachine/.settings/com.vaadin.integration.eclipse.prefs
new file mode 100644
index 0000000..e1173bc
--- /dev/null
+++ b/org.eclipse.osbp.abstractstatemachine/.settings/com.vaadin.integration.eclipse.prefs
@@ -0,0 +1,2 @@
+com.vaadin.integration.eclipse.previousCompileAction=widgetset
+eclipse.preferences.version=1
diff --git a/org.eclipse.osbp.abstractstatemachine/.settings/org.eclipse.bpmn2.modeler.core.prefs b/org.eclipse.osbp.abstractstatemachine/.settings/org.eclipse.bpmn2.modeler.core.prefs
new file mode 100644
index 0000000..4bffcea
--- /dev/null
+++ b/org.eclipse.osbp.abstractstatemachine/.settings/org.eclipse.bpmn2.modeler.core.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+target.runtime=org.jboss.runtime.jbpm5
diff --git a/org.eclipse.osbp.abstractstatemachine/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.abstractstatemachine/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.abstractstatemachine/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.abstractstatemachine/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.abstractstatemachine/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..a698e59
--- /dev/null
+++ b/org.eclipse.osbp.abstractstatemachine/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,12 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/org.eclipse.osbp.abstractstatemachine/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.abstractstatemachine/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.abstractstatemachine/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.abstractstatemachine/.settings/org.eclipse.pde.core.prefs b/org.eclipse.osbp.abstractstatemachine/.settings/org.eclipse.pde.core.prefs
new file mode 100644
index 0000000..f29e940
--- /dev/null
+++ b/org.eclipse.osbp.abstractstatemachine/.settings/org.eclipse.pde.core.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+pluginProject.extensions=false
+resolve.requirebundle=false
diff --git a/org.eclipse.osbp.abstractstatemachine/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.abstractstatemachine/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..19e3115
--- /dev/null
+++ b/org.eclipse.osbp.abstractstatemachine/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,11 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+BuilderConfiguration.is_project_specific=true
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.abstractstatemachine/META-INF/MANIFEST.MF b/org.eclipse.osbp.abstractstatemachine/META-INF/MANIFEST.MF
index 14c1dee..d147823 100644
--- a/org.eclipse.osbp.abstractstatemachine/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.abstractstatemachine/META-INF/MANIFEST.MF
@@ -16,8 +16,12 @@
org.eclipse.osgi.services;bundle-version="3.5.100",
com.vaadin.shared;bundle-version="[7.7.6,7.8.0)",
org.eclipse.osbp.fork.jpos;bundle-version="[1.14.0,1.15.0)",
- org.eclipse.osbp.jpa.services;bundle-version="0.9.0"
-Import-Package: javax.servlet;version="2.6.0",
+ org.eclipse.osbp.jpa.services;bundle-version="0.9.0",
+ org.eclipse.e4.ui.model.workbench,
+ org.eclipse.osbp.vaadin.addons.keyevents;bundle-version="0.9.0",
+ org.jsoup;bundle-version="1.8.3"
+Import-Package: com.vaadin.ui,
+ javax.servlet;version="2.6.0",
javax.servlet.http;version="2.6.0",
org.eclipse.e4.core.contexts,
org.eclipse.osbp.preferences;version="0.9.0",
diff --git a/org.eclipse.osbp.abstractstatemachine/src/org/eclipse/osbp/abstractstatemachine/AbstractDataProvider.java b/org.eclipse.osbp.abstractstatemachine/src/org/eclipse/osbp/abstractstatemachine/AbstractDataProvider.java
index 4f16f6f..a51d886 100644
--- a/org.eclipse.osbp.abstractstatemachine/src/org/eclipse/osbp/abstractstatemachine/AbstractDataProvider.java
+++ b/org.eclipse.osbp.abstractstatemachine/src/org/eclipse/osbp/abstractstatemachine/AbstractDataProvider.java
@@ -58,7 +58,11 @@
@Override
public Boolean find(IDataProvider.Provider listener, String dtoAlias, String fieldName, Object search) {
- return find(listener, dtoAlias, new Query(new LCompare.Equal(fieldName, search)));
+ Boolean retval = find(listener, dtoAlias, new Query(new LCompare.Equal(fieldName, search)));
+ if(!retval) {
+ LOGGER.error("find for {} failed", search);
+ }
+ return retval;
}
@Override
diff --git a/org.eclipse.osbp.abstractstatemachine/src/org/eclipse/osbp/abstractstatemachine/AbstractPeripheralService.java b/org.eclipse.osbp.abstractstatemachine/src/org/eclipse/osbp/abstractstatemachine/AbstractPeripheralService.java
index 5edf050..02c61a6 100644
--- a/org.eclipse.osbp.abstractstatemachine/src/org/eclipse/osbp/abstractstatemachine/AbstractPeripheralService.java
+++ b/org.eclipse.osbp.abstractstatemachine/src/org/eclipse/osbp/abstractstatemachine/AbstractPeripheralService.java
@@ -13,7 +13,6 @@
*/
package org.eclipse.osbp.abstractstatemachine;
-import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
@@ -31,10 +30,16 @@
import org.eclipse.osbp.ui.api.pos.ISignatureListener;
import org.eclipse.osbp.ui.api.pos.IZVTTransactionData;
import org.eclipse.osbp.ui.api.pos.PenData;
+import org.eclipse.osbp.ui.api.statemachine.IBeeper;
import org.eclipse.osbp.ui.api.statemachine.IPeripheral;
import org.eclipse.osbp.ui.api.statemachine.IStateMachine;
+import org.eclipse.osbp.ui.api.themes.IThemeResourceService.ThemeResourceType;
import org.osgi.framework.FrameworkUtil;
+import com.vaadin.server.ExternalResource;
+import com.vaadin.ui.Audio;
+import com.vaadin.ui.Video;
+
import jpos.BaseControl;
import jpos.CashDrawer;
import jpos.CashDrawerConst;
@@ -49,7 +54,6 @@
import jpos.config.JposEntryRegistry;
import jpos.epson.EpsonLineDisplayConst;
import jpos.epson.EpsonPOSPrinterConst;
-import jpos.events.ErrorEvent;
import jpos.events.ErrorListener;
import jpos.events.OutputCompleteEvent;
import jpos.events.OutputCompleteListener;
@@ -64,8 +68,12 @@
* PeripheralService is a bridge between javaPOS and the state machine
* participant.
*/
-public abstract class AbstractPeripheralService extends AbstractStateMachineParticipant
- implements IPeripheral, IPeripheral.Command, StatusUpdateListener, ErrorListener, OutputCompleteListener, ISignatureListener {
+public abstract class AbstractPeripheralService extends AbstractStateMachineParticipant implements IPeripheral, IPeripheral.Command, StatusUpdateListener, ErrorListener, OutputCompleteListener, ISignatureListener {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 5490886401274716894L;
/** The devices. */
protected Map<String, BaseControl> devices = new HashMap<>();
@@ -88,7 +96,27 @@
/** is init done correctly? */
protected boolean initDone = false;
+ /** The pen data supplied by signature pad. */
private List<PenData> penData = new ArrayList<>();
+
+ /** The beeper. */
+ protected IBeeper beeper;
+
+ /** The audio. */
+ protected Audio audio;
+
+ /** The video. */
+ protected Video video;
+
+ @Override
+ public boolean equals(Object obj) {
+ return super.equals(obj);
+ }
+
+ @Override
+ public int hashCode() {
+ return super.hashCode();
+ }
/*
* (non-Javadoc)
@@ -111,7 +139,7 @@
*
* @see foodmartdialogdslplugin.AbstractStateMachineParticipant#init()
*/
- @Override
+ @Override
public void init() {
LOGGER.debug("Library path=" + System.getProperty("java.library.path"));
// load all names of configured devices, instantiate and cache it
@@ -135,11 +163,6 @@
SimpleServiceManager serviceManager = new SimpleServiceManager(jposProperties);
serviceManager.getEntryRegistry().load();
props = serviceManager.getEntryRegistry();
- if (props != null && props.getSize() != 0) {
- initDone = initDevices();
- } else {
- LOGGER.debug("no devices are configured in file:{}", configFile);
- }
}
/*
@@ -904,7 +927,7 @@
* @see jpos.events.ErrorListener#errorOccurred(jpos.events.ErrorEvent)
*/
@Override
- public void errorOccurred(ErrorEvent e) { // NOSONAR
+ public void errorOccurred(jpos.events.ErrorEvent e) { // NOSONAR
switch (e.getErrorCodeExtended()) {
case POSPrinterConst.JPOS_EPTR_COVER_OPEN:
if (statemachine != null) {
@@ -1203,7 +1226,7 @@
public void setSignatureOpen(String dummy) {
if(POSServiceBinder.getSignatureService() != null) {
if(POSServiceBinder.getSignatureService().openTablet(statemachine.getBlobService())) {
- statemachine.schedule(statemachine, 500L, new MessageEvent(EventType.TRIGGER, "onSignaturePadOpen"));
+ statemachine.schedule(statemachine, 500, new MessageEvent(EventType.TRIGGER, "onSignaturePadOpen"));
}
}
}
@@ -1283,4 +1306,24 @@
public String getSignatureBlob() {
return POSServiceBinder.getSignatureService().getSignatureBlob(statemachine.getSceenWidth(), statemachine.getScreenHeight());
}
+
+ public void setBeeper(String parameters) {
+ Integer duration;
+ Integer frequency;
+ String[] parts = parameters.split("\\|");
+ duration = Integer.parseInt(parts[0]);
+ frequency = Integer.parseInt(parts[1]);
+ beeper.beep(duration, frequency);
+ }
+
+ public void setPlayer(String name) {
+ video.setSources(statemachine.getThemeResourceService().getThemeResource(name, ThemeResourceType.VIDEO));
+ video.play();
+ }
+
+ public void setSound(String name) {
+ audio.setSources(statemachine.getThemeResourceService().getThemeResource(name, ThemeResourceType.SOUND));
+// audio.setSources(new ExternalResource("http://www.podtrac.com/pts/redirect.mp3?http://piledriver.hipcast.com/deluge/WrestleManiaX7OSWReview55.mp3"));
+ audio.play();
+ }
}
diff --git a/org.eclipse.osbp.abstractstatemachine/src/org/eclipse/osbp/abstractstatemachine/AbstractStateMachine.java b/org.eclipse.osbp.abstractstatemachine/src/org/eclipse/osbp/abstractstatemachine/AbstractStateMachine.java
index b79a6a9..2436b1e 100644
--- a/org.eclipse.osbp.abstractstatemachine/src/org/eclipse/osbp/abstractstatemachine/AbstractStateMachine.java
+++ b/org.eclipse.osbp.abstractstatemachine/src/org/eclipse/osbp/abstractstatemachine/AbstractStateMachine.java
@@ -20,17 +20,18 @@
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
-import java.util.Timer;
-import java.util.TimerTask;
import java.util.concurrent.CopyOnWriteArraySet;
import javax.annotation.PreDestroy;
+import javax.swing.Timer;
import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
import org.eclipse.osbp.dsl.common.datatypes.IDto;
import org.eclipse.osbp.runtime.common.filter.IQuery;
import org.eclipse.osbp.runtime.common.session.ISession;
@@ -49,13 +50,19 @@
import org.eclipse.osbp.ui.api.user.IUser;
import org.eclipse.osbp.utils.vaadin.MessageDialog;
import org.eclipse.osbp.utils.vaadin.YesNoDialog;
+import org.eclipse.osbp.vaadin.addons.keyevents.KeyEventExtension;
import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import org.slf4j.Logger;
+import com.vaadin.event.ShortcutAction.KeyCode;
import com.vaadin.server.Page;
import com.vaadin.server.WebBrowser;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.HasComponents;
+import com.vaadin.ui.Panel;
import com.vaadin.ui.UI;
+import com.vaadin.ui.VerticalLayout;
public abstract class AbstractStateMachine implements IStateMachine, IMessageRequester.ClickRecipient {
private static final String ENABLED = "Enabled";
@@ -66,7 +73,6 @@
protected Map<String, MessageDialog> messageDialogs = new HashMap<>();
protected Map<String, YesNoDialog> yesnoDialogs = new HashMap<>();
protected WebBrowser webBrowser = Page.getCurrent().getWebBrowser();
- protected Timer timer;
protected IUser user;
protected Locale locale;
protected IDSLMetadataService dslMetadataService;
@@ -77,6 +83,78 @@
protected SelectableChannel channel;
protected String lastTrigger;
protected IEclipseContext eclipseContext;
+ protected Map<Integer, String> keyMapper = new HashMap<Integer, String>() {
+ private static final long serialVersionUID = 8801421284339992078L;
+ {
+ put(KeyCode.BACKSPACE, "BACKSPACE");
+ put(KeyCode.TAB, "TAB");
+ put(KeyCode.ENTER, "ENTER");
+ put(KeyCode.ESCAPE, "ESC");
+ put(KeyCode.PAGE_UP, "PGUP");
+ put(KeyCode.PAGE_DOWN, "PGDOWN");
+ put(KeyCode.END, "END");
+ put(KeyCode.HOME, "HOME");
+ put(KeyCode.ARROW_LEFT, "LEFTARROW");
+ put(KeyCode.ARROW_UP, "UPARROW");
+ put(KeyCode.ARROW_RIGHT, "RIGHTARROW");
+ put(KeyCode.ARROW_DOWN, "DOWNARROW");
+ put(KeyCode.INSERT, "INSERT");
+ put(KeyCode.DELETE, "DELETE");
+ put(KeyCode.F1, "F1");
+ put(KeyCode.F2, "F2");
+ put(KeyCode.F3, "F3");
+ put(KeyCode.F4, "F4");
+ put(KeyCode.F5, "F5");
+ put(KeyCode.F6, "F6");
+ put(KeyCode.F7, "F7");
+ put(KeyCode.F8, "F8");
+ put(KeyCode.F9, "F9");
+ put(KeyCode.F10, "F10");
+ put(KeyCode.F11, "F11");
+ put(KeyCode.F12, "F12");
+ }
+ };
+ private KeyEventExtension extension = null;
+
+ @Override
+ public void installKeyEventConsumer(VerticalLayout layout) {
+ extension = KeyEventExtension.addTo(layout);
+ extension.setCallback(this::keyPressed);
+ }
+
+ @Override
+ public void uninstallKeyEventConsumer() {
+ if(extension != null) {
+ extension.remove();
+ extension = null;
+ }
+ }
+
+ protected Component findById(HasComponents root, String id) {
+ Iterator<Component> iterate = root.iterator();
+ while (iterate.hasNext()) {
+ Component c = iterate.next();
+ if (id.equals(c.getId())) {
+ return c;
+ }
+ if (c instanceof HasComponents) {
+ Component cc = findById((HasComponents) c, id);
+ if (cc != null)
+ return cc;
+ }
+ }
+ return null;
+ }
+
+ protected void keyPressed(org.eclipse.osbp.vaadin.addons.keyevents.client.Event event) {
+ if (!Character.isISOControl(event.charCode)) {
+ processEvent(this, new MessageEvent(EventType.KEYBOARD, Character.toString((char) event.charCode)));
+ } else {
+ if (keyMapper.containsKey(event.charCode)) {
+ processEvent(this, new MessageEvent(EventType.FUNCTIONALKEYBOARD, keyMapper.get(event.charCode)));
+ }
+ }
+ }
private void addEventProvider(IEventSource.Enabler listener) {
enablerList.add(listener);
@@ -467,8 +545,6 @@
@PreDestroy
void destroy() {
- timer.cancel();
- timer = null;
}
@Override
@@ -482,31 +558,12 @@
}
@Override
- public void schedule(IStateMachine statemachine, long milliseconds, MessageEvent event) {
- if (timer == null) {
- timer = new Timer();
- } else {
- timer.cancel();
- timer.purge();
- timer = new Timer();
- }
- timer.schedule(new EventSourceTask(statemachine, event), milliseconds);
- }
-
- class EventSourceTask extends TimerTask {
- private IStateMachine statemachine;
- private MessageEvent event;
-
- public EventSourceTask(IStateMachine statemachine, MessageEvent event) {
- this.statemachine = statemachine;
- this.event = event;
- }
-
- @Override
- public void run() {
- if (UI.getCurrent().isAttached())
- statemachine.processEvent(statemachine, event);
- }
+ public void schedule(IStateMachine statemachine, int milliseconds, MessageEvent event) {
+ Timer timer = new Timer(milliseconds, action -> {
+ statemachine.processEvent(statemachine, event);
+ });
+ timer.setRepeats(false);
+ timer.start();
}
/**
diff --git a/org.eclipse.osbp.abstractstatemachine/src/org/eclipse/osbp/abstractstatemachine/AbstractStateMachineParticipant.java b/org.eclipse.osbp.abstractstatemachine/src/org/eclipse/osbp/abstractstatemachine/AbstractStateMachineParticipant.java
index a323000..72dcc19 100644
--- a/org.eclipse.osbp.abstractstatemachine/src/org/eclipse/osbp/abstractstatemachine/AbstractStateMachineParticipant.java
+++ b/org.eclipse.osbp.abstractstatemachine/src/org/eclipse/osbp/abstractstatemachine/AbstractStateMachineParticipant.java
@@ -34,15 +34,25 @@
public abstract class AbstractStateMachineParticipant implements
IStateMachineParticipant {
-
+ private static final long serialVersionUID = -7670617914357429160L;
/** The LOGGER. */
protected static final Logger LOGGER = LoggerFactory
.getLogger(AbstractStateMachineParticipant.class);
protected PropertyChangeSupport pcs = new PropertyChangeSupport(this);
- protected IStateMachine statemachine;
+ protected transient IStateMachine statemachine;
protected Locale locale;
- public void addPropertyChangeListener(PropertyChangeListener listener) {
+ @Override
+ public boolean equals(Object obj) {
+ return super.equals(obj);
+ }
+
+ @Override
+ public int hashCode() {
+ return super.hashCode();
+ }
+
+ void addPropertyChangeListener(PropertyChangeListener listener) {
pcs.addPropertyChangeListener(listener);
}