KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > mc4j > console > swing > graph > GlassWindow


1 /*
2  * Copyright 2002-2005 Greg Hinkle
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16 package org.mc4j.console.swing.graph;
17
18 import org.jdesktop.swingx.JXGlassBox;
19
20 import javax.swing.*;
21 import javax.swing.event.MouseInputAdapter JavaDoc;
22 import java.awt.BorderLayout JavaDoc;
23 import java.awt.Color JavaDoc;
24 import java.awt.Container JavaDoc;
25 import java.awt.Graphics JavaDoc;
26 import java.awt.Point JavaDoc;
27 import java.awt.event.ActionEvent JavaDoc;
28 import java.awt.event.MouseEvent JavaDoc;
29
30 /**
31  * @author Greg Hinkle (ghinkle@users.sourceforge.net), Feb 24, 2005
32  * @version $Revision: 570 $($Author: ghinkl $ / $Date: 2006-04-12 15:14:16 -0400 (Wed, 12 Apr 2006) $)
33  */

34 public class GlassWindow extends JXGlassBox {
35
36     protected JPanel header;
37     protected JPanel footer;
38     protected JLabel title;
39     protected JComponent contents;
40
41     protected static GlassWindow INSTANCE = new GlassWindow();
42     protected static JComponent currentParent;
43
44
45
46     private GlassWindow() {
47         super(0.85f);
48         initUI();
49     }
50
51
52     private void initUI() {
53         setBorder(BorderFactory.createRaisedBevelBorder());
54         header = new JPanel(new BorderLayout JavaDoc());
55         header.add(new JLabel("Graph Series"),BorderLayout.WEST);
56
57         JButton close = new JButton("x");
58         close.setAction(new AbstractAction() {
59             public void actionPerformed(ActionEvent JavaDoc e) {
60                 INSTANCE.setVisible(false);
61             }
62         });
63
64         MoveListener listener = new MoveListener();
65         header.addMouseListener(listener);
66         header.addMouseMotionListener(listener);
67         header.add(close, BorderLayout.EAST);
68         header.setBackground(Color.gray);
69
70         ResizeListener resizeListener = new ResizeListener();
71         footer = new JPanel(new BorderLayout JavaDoc());
72         ResizeButton b = new ResizeButton();
73         footer.add(b);
74         b.addMouseListener(resizeListener);
75         b.addMouseMotionListener(resizeListener);
76     }
77
78     public static class ResizeButton extends JPanel {
79         public ResizeButton() {
80             super();
81             setSize(8,8);
82         }
83
84         public void paint(Graphics JavaDoc g) {
85         super.paint(g);
86         // After painting our components, we're gonna draw fake resize lines
87
g.setColor(Color.white);
88         g.fillRect(getWidth() - 8, getHeight() - 8, 8,8);
89         g.setColor(Color.gray);
90         g.drawLine(getWidth() - 7, getHeight() - 1, getWidth() - 1, getHeight() - 7);
91         g.drawLine(getWidth() - 5, getHeight() - 1, getWidth() - 1, getHeight() - 5);
92         g.drawLine(getWidth() - 3, getHeight() - 1, getWidth() - 1, getHeight() - 3);
93     }
94     }
95
96     public class MoveListener extends MouseInputAdapter JavaDoc {
97         private Point JavaDoc last;
98
99         public void mouseClicked(MouseEvent JavaDoc e) {
100             last = e.getPoint();
101         }
102         public void mouseReleased(MouseEvent JavaDoc e) {
103             last = null;
104         }
105         public void mouseDragged(MouseEvent JavaDoc e) {
106             if (last == null) {
107                 last = e.getPoint();
108             } else {
109                 Point JavaDoc p = e.getPoint();
110                 Point JavaDoc newLocation = getLocation();
111                 newLocation.translate(p.x - last.x, p.y - last.y);
112                 setLocation(newLocation);
113             }
114         }
115     }
116
117     public class ResizeListener extends MouseInputAdapter JavaDoc {
118         private Point JavaDoc last;
119
120         public void mouseClicked(MouseEvent JavaDoc e) {
121             last = e.getPoint();
122         }
123         public void mouseReleased(MouseEvent JavaDoc e) {
124             last = null;
125         }
126         public void mouseDragged(MouseEvent JavaDoc e) {
127             if (last == null) {
128                 last = e.getPoint();
129             } else {
130                 Point JavaDoc p = e.getPoint();
131                 setSize(getWidth() + p.x - last.x, getHeight() + p.y - last.y);
132                 last = e.getPoint();
133             }
134         }
135     }
136
137     public void setContents(JComponent contents) {
138         removeAll();
139         setLayout(new BorderLayout JavaDoc());
140         add(header, BorderLayout.NORTH);
141         add(contents, BorderLayout.CENTER);
142         add(footer, BorderLayout.SOUTH);
143     }
144
145
146     public static void show(JComponent contents, JComponent parent) {
147
148         Container JavaDoc glass = (Container JavaDoc) parent.getRootPane().getGlassPane();
149         INSTANCE.setContents(contents);
150         INSTANCE.setVisible(true);
151         INSTANCE.showOnGlassPane(glass,parent,0,0,1);
152     }
153
154 }
155
Popular Tags