001 /**
002 * Copyright (C) 2009-2011 the original author or authors.
003 * See the notice.md file distributed with this work for additional
004 * information regarding copyright ownership.
005 *
006 * Licensed under the Apache License, Version 2.0 (the "License");
007 * you may not use this file except in compliance with the License.
008 * You may obtain a copy of the License at
009 *
010 * http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing, software
013 * distributed under the License is distributed on an "AS IS" BASIS,
014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 */
018
019 package org.fusesource.restygwt.example.client.event;
020
021 import com.google.gwt.event.shared.GwtEvent;
022
023 /**
024 * generic ModelChangeEvent with identifier for the matching domain class. unfortinately
025 * its not possible to have different eventclasses for different domain-updates due to
026 * the lack of reflection. could do this with a generator class, maybe later..
027 *
028 * taken from http://stackoverflow.com/questions/2951621/gwt-custom-events/2967359#2967359
029 *
030 * @author <a href="mailto:andi.balke@gmail.com">andi</<a>
031 *
032 */
033 public class ModelChangeEvent extends GwtEvent<ModelChangedEventHandler> {
034
035 public static Type<ModelChangedEventHandler> TYPE = new Type<ModelChangedEventHandler>();
036
037 /**
038 * for which domain class things have changed
039 */
040 private String domainIdentifier;
041
042 public ModelChangeEvent(final String domainIdentifier) {
043 this.domainIdentifier = domainIdentifier;
044 }
045
046 public String getDomain() {
047 return domainIdentifier;
048 }
049
050 @Override
051 public com.google.gwt.event.shared.GwtEvent.Type<ModelChangedEventHandler> getAssociatedType() {
052 return TYPE;
053 }
054
055 @Override
056 protected void dispatch(ModelChangedEventHandler handler) {
057 handler.onModelChange(this);
058 }
059
060 public String toString() {
061 return "ModelChangeEvent#" + domainIdentifier;
062 }
063 }