001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017: package org.apache.jetspeed.portlets.layout;
018:
019: import org.apache.jetspeed.om.page.Fragment;
020:
021: /**
022: * A LayoutEvent is used by ColumnLayout to notify its LayoutAeventListeners
023: * that there have been a change in the position of a fragment within the layout.
024: * <h3>Constant Values</h3>
025: * <ul>
026: * <li>ADDED == 0</li>
027: * <li>MOVED_UP == 1</li>
028: * <li>MOVED_DOWN == 2</li>
029: * <li>MOVED_LEFT == 3</li>
030: * <li>MOVED_RIGHT == 4</li>
031: * </ul>
032: *
033: *
034: * @author <href a="mailto:weaver@apache.org">Scott T. Weaver</a>
035: * @see org.apache.jetspeed.om.page.Fragment
036: * @see org.apache.jetspeed.portlets.layout.LayoutEventListener
037: * @see org.apache.jetspeed.portlets.layout.ColumnLayout
038: *
039: */
040: public class LayoutEvent {
041: /**Event type value that notifies that a fragment has been added */
042: public static final int ADDED = 0;
043: /**Event type value that notifies that a fragment has been moved up */
044: public static final int MOVED_UP = 1;
045: /**Event type value that notifies that a fragment has been moved down */
046: public static final int MOVED_DOWN = 2;
047: /**Event type value that notifies that a fragment has been moved left */
048: public static final int MOVED_LEFT = 3;
049: /**Event type value that notifies that a fragment has been moved right */
050: public static final int MOVED_RIGHT = 4;
051:
052: private final int eventType;
053: private final Fragment fragment;
054: private final LayoutCoordinate originalCoordinate;
055: private final LayoutCoordinate newCoordinate;
056:
057: /**
058: *
059: * @param eventType The type of event (see the event constants)
060: * @param fragment Fragment that is the target of this event.
061: * @param originalCoordinate the previous LayoutCoordinate of this Fragment
062: * @param newCoordinate the new and current coordinates of this fragment.
063: * @see org.apache.jetspeed.om.page.Fragment
064: */
065: public LayoutEvent(int eventType, Fragment fragment,
066: LayoutCoordinate originalCoordinate,
067: LayoutCoordinate newCoordinate) {
068: super ();
069: this .eventType = eventType;
070: this .fragment = fragment;
071: this .originalCoordinate = originalCoordinate;
072: this .newCoordinate = newCoordinate;
073: }
074:
075: /**
076: * Returns the event type (see event constants)
077: * @return the event type (see event constants)
078: * @see ColumnLayout#layoutType
079: */
080: public int getEventType() {
081: return eventType;
082: }
083:
084: /**
085: * Returns the fragment that is the target of this event.
086: * @return Fragment the fragment that is the target of this event.
087: * @see org.apache.jetspeed.om.page.Fragment
088: */
089: public Fragment getFragment() {
090: return fragment;
091: }
092:
093: /**
094: * Returns the new/current coordinate of the Fragment targeted by this event.
095: * @return the new/current coordinate of the Fragment targeted by this event.
096: * @see LayoutCoordinate
097: */
098: public LayoutCoordinate getNewCoordinate() {
099: return newCoordinate;
100: }
101:
102: /**
103: * Returns the original (prior to the event) coordinate of the Fragment targeted by this event.
104: * @return the original (prior to the event) coordinate of the Fragment targeted by this event.
105: * @see LayoutCoordinate
106: */
107: public LayoutCoordinate getOriginalCoordinate() {
108: return originalCoordinate;
109: }
110:
111: public boolean equals(Object obj) {
112: if (obj instanceof LayoutEvent) {
113: LayoutEvent event = (LayoutEvent) obj;
114: return event.fragment.equals(fragment)
115: && event.eventType == eventType
116: && event.originalCoordinate
117: .equals(originalCoordinate)
118: && event.newCoordinate.equals(newCoordinate);
119:
120: } else {
121: return false;
122: }
123: }
124:
125: public String toString() {
126: return "event_target=" + fragment.getId() + ",event_type_code="
127: + eventType + ",orginial_coordinate="
128: + originalCoordinate + ",new_coordinate="
129: + newCoordinate;
130: }
131:
132: }
|