Source code: com/arranger/jarl/shell/views/JarlShellFrame.java
1 package com.arranger.jarl.shell.views;
2
3 import com.arranger.jarl.shell.JarlShell;
4
5 import javax.swing.*;
6 import javax.swing.event.InternalFrameAdapter;
7 import javax.swing.event.InternalFrameEvent;
8 import java.awt.*;
9 import java.awt.event.WindowAdapter;
10 import java.awt.event.WindowEvent;
11 import java.beans.PropertyVetoException;
12 import java.beans.PropertyChangeListener;
13 import java.beans.PropertyChangeEvent;
14
15 /**
16 * JarlShellFrame is an abstraction
17 * for either a {@link JFrame} or a {@link JInternalFrame}
18 */
19 public class JarlShellFrame {
20
21 protected JFrame m_jFrame;
22 protected JInternalFrame m_jInternalFrame;
23 protected boolean m_useIntenalFrame;
24
25 public static JarlShellFrame createJarlShellFrame(JarlShell jarlShell,
26 Container container,
27 int width, int height,
28 String title) {
29
30 JarlShellFrame jarlShellFrame = new JarlShellFrame(jarlShell, title);
31
32 jarlShellFrame.setBackground(SystemColor.window);
33 container.setBackground(SystemColor.window);
34 jarlShellFrame.setSize(width, height);
35 jarlShellFrame.setContentPane(container);
36
37 return jarlShellFrame;
38 }
39
40 public JarlShellFrame(JarlShell jarlShell, String title) {
41 m_useIntenalFrame = jarlShell.isFullGUI();
42 if (m_useIntenalFrame) {
43 m_jInternalFrame = new JInternalFrame(title, false, true, false, true);
44 jarlShell.getMainJarlShellFrame().addFrame(this);
45 try {
46 m_jInternalFrame.setSelected(true);
47 } catch (PropertyVetoException e) {
48 e.printStackTrace();
49 }
50 } else {
51 m_jFrame = new JFrame(title);
52 }
53 }
54
55 /**
56 * You might want to do some stuff prior to opening it
57 */
58 public void packAndShow() {
59 pack();
60 setVisible(true);
61 show();
62 }
63
64 public Component getComponent() {
65 if (m_useIntenalFrame) {
66 return m_jInternalFrame;
67 } else {
68 return m_jFrame;
69 }
70 }
71
72 public interface JarlShellFrameClosingListener {
73 public void onClosing();
74 }
75
76 public void addWindowClosingListener(final JarlShellFrameClosingListener jarlShellFrameClosingListener) {
77 if (m_useIntenalFrame) {
78 m_jInternalFrame.addInternalFrameListener(new InternalFrameAdapter() {
79 public void internalFrameClosing(InternalFrameEvent e) {
80 super.internalFrameClosing(e);
81 jarlShellFrameClosingListener.onClosing();
82 }
83 });
84 m_jInternalFrame.addPropertyChangeListener(JInternalFrame.IS_CLOSED_PROPERTY, new PropertyChangeListener() {
85 public void propertyChange(PropertyChangeEvent evt) {
86 jarlShellFrameClosingListener.onClosing();
87 }
88 });
89 } else {
90 m_jFrame.addWindowListener(new WindowAdapter() {
91 public void windowClosing(WindowEvent e) {
92 super.windowClosing(e);
93 jarlShellFrameClosingListener.onClosing();
94 }
95 });
96 }
97 }
98
99 public void setContentPane(Container container) {
100 if (m_useIntenalFrame) {
101 m_jInternalFrame.setContentPane(container);
102 } else {
103 m_jFrame.setContentPane(container);
104 }
105 }
106
107 public void setBackground(Color color) {
108 if (m_useIntenalFrame) {
109 m_jInternalFrame.setBackground(color);
110 } else {
111 m_jFrame.setBackground(color);
112 }
113 }
114
115 public void setSize(int width, int height) {
116 if (m_useIntenalFrame) {
117 m_jInternalFrame.setSize(width, height);
118 } else {
119 m_jFrame.setSize(width, height);
120 }
121 }
122
123 public void setJMenuBar(JMenuBar jMenuBar) {
124 if (m_useIntenalFrame) {
125 m_jInternalFrame.setJMenuBar(jMenuBar);
126 } else {
127 m_jFrame.setJMenuBar(jMenuBar);
128 }
129 }
130
131 public void setTitle(String title) {
132 if (m_useIntenalFrame) {
133 m_jInternalFrame.setTitle(title);
134 } else {
135 m_jFrame.setTitle(title);
136 }
137 }
138
139 public void pack() {
140 if (m_useIntenalFrame) {
141 m_jInternalFrame.pack();
142 } else {
143 m_jFrame.pack();
144 }
145 }
146
147 public void setResizable(boolean resizable) {
148 if (m_useIntenalFrame) {
149 m_jInternalFrame.setResizable(resizable);
150 } else {
151 m_jFrame.setResizable(resizable);
152 }
153 }
154
155 public void show() {
156 if (m_useIntenalFrame) {
157 m_jInternalFrame.show();
158 } else {
159 m_jFrame.show();
160 }
161 }
162
163 public void setVisible(boolean visible) {
164 if (m_useIntenalFrame) {
165 m_jInternalFrame.setVisible(visible);
166 } else {
167 m_jFrame.setVisible(visible);
168 }
169 }
170
171 public void repaint() {
172 if (m_useIntenalFrame) {
173 m_jInternalFrame.repaint();
174 } else {
175 m_jFrame.repaint();
176 }
177 }
178
179 public void dispose() {
180 if (m_useIntenalFrame) {
181 m_jInternalFrame.dispose();
182 } else {
183 m_jFrame.dispose();
184 }
185 }
186 }