1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.vectomatic.svg.edit.client.command;
19
20 import java.util.Map;
21
22 import org.vectomatic.svg.edit.client.engine.SVGModel;
23 import org.vectomatic.svg.edit.client.event.StoreEventProcessor;
24 import org.vectomatic.svg.edit.client.model.svg.SVGElementModel;
25
26 import com.extjs.gxt.ui.client.store.Record;
27 import com.extjs.gxt.ui.client.store.Record.RecordUpdate;
28 import com.extjs.gxt.ui.client.store.StoreEvent;
29 import com.google.gwt.core.client.GWT;
30
31
32
33
34
35 public abstract class EditCommandFactoryBase extends CommandFactoryBase implements StoreEventProcessor {
36 @Override
37 public boolean processStoreEvent(StoreEvent<SVGElementModel> se) {
38 GWT.log("EditCommandFactoryBase.processStoreEvent: " + se.getOperation());
39 Record record = se.getRecord();
40 if (record != null && se.getOperation() != RecordUpdate.COMMIT) {
41 Map<String, Object> changes = record.getChanges();
42 for(Map.Entry<String, Object> change : changes.entrySet()) {
43 GWT.log("Change: " + change.getKey() + " = " + change.getValue());
44 }
45 SVGElementModel model = (SVGElementModel)record.getModel();
46 SVGModel owner = model.getOwner();
47 if (owner != null) {
48 owner.getCommandStore().addCommand(createCommand(model, changes));
49 }
50 return true;
51 }
52 return false;
53 }
54
55 protected abstract ICommand createCommand(SVGElementModel model, Map<String, Object> changes);
56 }