1/*
2 *  Licensed to the Apache Software Foundation (ASF) under one or more
3 *  contributor license agreements.  See the NOTICE file distributed with
4 *  this work for additional information regarding copyright ownership.
5 *  The ASF licenses this file to You under the Apache License, Version 2.0
6 *  (the "License"); you may not use this file except in compliance with
7 *  the License.  You may obtain a copy of the License at
8 *
9 *     http://www.apache.org/licenses/LICENSE-2.0
10 *
11 *  Unless required by applicable law or agreed to in writing, software
12 *  distributed under the License is distributed on an "AS IS" BASIS,
13 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 *  See the License for the specific language governing permissions and
15 *  limitations under the License.
16 */
17/**
18 * @author Michael Danilov
19 * @version $Revision$
20 */
21package java.awt.event;
22
23import java.awt.AWTEvent;
24import java.awt.Component;
25//???AWT: import java.awt.Container;
26
27/**
28 * This class is not supported in Android 1.0. It is merely provided to maintain
29 * interface compatibility with desktop Java implementations.
30 *
31 * @since Android 1.0
32 */
33public class HierarchyEvent extends AWTEvent {
34
35    private static final long serialVersionUID = -5337576970038043990L;
36
37    public static final int HIERARCHY_FIRST = 1400;
38
39    public static final int HIERARCHY_CHANGED = 1400;
40
41    public static final int ANCESTOR_MOVED = 1401;
42
43    public static final int ANCESTOR_RESIZED = 1402;
44
45    public static final int HIERARCHY_LAST = 1402;
46
47    public static final int PARENT_CHANGED = 1;
48
49    public static final int DISPLAYABILITY_CHANGED = 2;
50
51    public static final int SHOWING_CHANGED = 4;
52
53    //???AWT: private Container changedParent;
54    private Component changed;
55    private long changeFlag;
56
57    //???AWT
58    /*
59    public HierarchyEvent(Component source, int id, Component changed,
60                          Container changedParent) {
61        this(source, id, changed, changedParent, 0l);
62    }
63    */
64
65    //???AWT
66    /*
67    public HierarchyEvent(Component source, int id, Component changed,
68            Container changedParent, long changeFlags) {
69        super(source, id);
70
71        this.changed = changed;
72        this.changedParent = changedParent;
73        this.changeFlag = changeFlags;
74    }
75    */
76    //???AWT: Fake constructor, should be as above.
77    public HierarchyEvent(Component source, int id, Component changed,
78            Object changedParent, long changeFlags) {
79        super(source, id);
80
81//        this.changed = changed;
82//        this.changedParent = changedParent;
83//        this.changeFlag = changeFlags;
84    }
85
86    public Component getComponent() {
87        return (Component) source;
88    }
89
90    public long getChangeFlags() {
91        return changeFlag;
92    }
93
94    public Component getChanged() {
95        return changed;
96    }
97
98    //???AWT
99    /*
100    public Container getChangedParent() {
101        return changedParent;
102
103    }
104    */
105
106    @Override
107    public String paramString() {
108        /* The format is based on 1.5 release behavior
109         * which can be revealed by the following code:
110         *
111         * HierarchyEvent e = new HierarchyEvent(new Button("Button"),
112         *          HierarchyEvent.HIERARCHY_CHANGED,
113         *          new Panel(), new Container());
114         * System.out.println(e);
115         */
116        String paramString = null;
117
118        switch (id) {
119        case HIERARCHY_CHANGED:
120            paramString = "HIERARCHY_CHANGED"; //$NON-NLS-1$
121            break;
122        case ANCESTOR_MOVED:
123            paramString = "ANCESTOR_MOVED"; //$NON-NLS-1$
124            break;
125        case ANCESTOR_RESIZED:
126            paramString = "ANCESTOR_RESIZED"; //$NON-NLS-1$
127            break;
128        default:
129            paramString = "unknown type"; //$NON-NLS-1$
130        }
131
132        paramString += " ("; //$NON-NLS-1$
133
134        if (id == HIERARCHY_CHANGED) {
135            if ((changeFlag & PARENT_CHANGED) > 0) {
136                paramString += "PARENT_CHANGED,"; //$NON-NLS-1$
137            }
138            if ((changeFlag & DISPLAYABILITY_CHANGED) > 0) {
139                paramString += "DISPLAYABILITY_CHANGED,"; //$NON-NLS-1$
140            }
141            if ((changeFlag & SHOWING_CHANGED) > 0) {
142                paramString += "SHOWING_CHANGED,"; //$NON-NLS-1$
143            }
144        }
145
146        //???AWT
147        /*
148        return paramString + "changed=" + changed +  //$NON-NLS-1$
149                ",changedParent=" + changedParent + ")"; //$NON-NLS-1$ //$NON-NLS-2$
150        */
151        return paramString;
152    }
153
154}
155