Hi All,
Am creating a panel with a table and a few buttons. The tbale will initially be in non-editable mode. And on the button click am supposed to set the table in editable mode. Am trying to achieve this through custom events.
public class HoursOfOperationTable extends Table {
…
public void addListener(HoursOfOperationEventListener listener) {
try {
Method method = HoursOfOperationEventListener.class.getDeclaredMethod(
“hoursSavedEvent”, new Class { HoursOfOperationEvent.class });
addListener(HoursOfOperationEvent.class, listener, method);
} catch (final java.lang.NoSuchMethodException e) {
throw new java.lang.RuntimeException(
“Internal error, editor saved method not found”);
}
}
public void removeListener(HoursOfOperationEventListener listener) {
removeListener(HoursOfOperationEvent.class, listener);
}
}
And below are the custom event and listener interface -
public class HoursOfOperationEvent extends Component.Event {
private String eventName;
public HoursOfOperationEvent(Component source, String eventName) {
super(source);
this.eventName = eventName;
}
public String getEvent() {
return this.eventName;
}
}
public interface HoursOfOperationEventListener extends Serializable {
public void hoursSavedEvent(HoursOfOperationEvent event);
}
Here is the button click listener -
editButton.addClickListener(new ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
fireEvent(new HoursOfOperationEvent(hoursTable, “edit”));
…
}
In the panel constructor, am trying construct the table and attach the listener -
hoursTable.addListener(new HoursOfOperationEventListener() {
@Override
public void hoursSavedEvent(HoursOfOperationEvent event) {
String action = event.getEvent();
if(“Edit”.equalsIgnoreCase(action)) {
hoursTable.setEditable(true);
} else if(“Save”.equalsIgnoreCase(action)) {
HoursOfOpPersistResults persistResult = propagateUpdates();
if(HoursOfOpPersistResults.SUCCESS.equals(persistResult.getStatusCode()))
Notification.show(propertyLoader.getProperty(“Notification”, “HOPUpdated”), Notification.TYPE_TRAY_NOTIFICATION);
else if(HoursOfOpPersistResults.NOUPDATES.equals(persistResult.getStatusCode()))
Notification.show(propertyLoader.getProperty(“Notification”, “HOPUpdateNotRequried”), Notification.TYPE_TRAY_NOTIFICATION);
else if(HoursOfOpPersistResults.PERSISTFAILURE.equals(persistResult.getStatusCode()))
Notification.show(propertyLoader.getProperty(“Notification”, “HOPUpdateFailed”), Notification.TYPE_ERROR_MESSAGE);
} else if (“Discard”.equalsIgnoreCase(action)) {
revertChanges();
}
}
Having all done this, I still don’t see the hoursSavedEvent method getting invoked after the editButton click. And also the table is not moving to editable mode.
Please help. This is much urgent.
Larsen.