145 handler = null; 146 } 147 148 /** 149 * Installs default properties. 150 */ 151 protected void installDefaults() { 152 if (desktop.getBackground() == null || 153 desktop.getBackground() instanceof UIResource) { 154 desktop.setBackground(UIManager.getColor("Desktop.background")); 155 } 156 LookAndFeel.installProperty(desktop, "opaque", Boolean.TRUE); 157 } 158 159 /** 160 * Uninstalls default properties. 161 */ 162 protected void uninstallDefaults() { } 163 164 /** 165 * Installs the <code>PropertyChangeListener</code> returned from 166 * <code>createPropertyChangeListener</code> on the 167 * <code>JDesktopPane</code>. 168 * 169 * @since 1.5 170 * @see #createPropertyChangeListener 171 */ 172 protected void installListeners() { 173 pcl = createPropertyChangeListener(); 174 desktop.addPropertyChangeListener(pcl); 175 } 176 177 /** 178 * Uninstalls the <code>PropertyChangeListener</code> returned from 179 * <code>createPropertyChangeListener</code> from the 180 * <code>JDesktopPane</code>. 181 * 182 * @since 1.5 183 * @see #createPropertyChangeListener 184 */ 185 protected void uninstallListeners() { 186 desktop.removePropertyChangeListener(pcl); 187 pcl = null; 188 } 189 190 /** 191 * Installs desktop manager. 192 */ 193 protected void installDesktopManager() { 194 desktopManager = desktop.getDesktopManager(); 195 if(desktopManager == null) { 196 desktopManager = new BasicDesktopManager(); 197 desktop.setDesktopManager(desktopManager); 198 } 199 } 200 299 } 300 301 public void paint(Graphics g, JComponent c) {} 302 303 @Override 304 public Dimension getPreferredSize(JComponent c) { 305 return null; 306 } 307 308 @Override 309 public Dimension getMinimumSize(JComponent c) { 310 return new Dimension(0, 0); 311 } 312 313 @Override 314 public Dimension getMaximumSize(JComponent c) { 315 return new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE); 316 } 317 318 /** 319 * Returns the <code>PropertyChangeListener</code> to install on 320 * the <code>JDesktopPane</code>. 321 * 322 * @since 1.5 323 * @return The PropertyChangeListener that will be added to track 324 * changes in the desktop pane. 325 */ 326 protected PropertyChangeListener createPropertyChangeListener() { 327 return getHandler(); 328 } 329 330 private Handler getHandler() { 331 if (handler == null) { 332 handler = new Handler(); 333 } 334 return handler; 335 } 336 337 private class Handler implements PropertyChangeListener { 338 public void propertyChange(PropertyChangeEvent evt) { 339 String propertyName = evt.getPropertyName(); 340 if ("desktopManager" == propertyName) { | 145 handler = null; 146 } 147 148 /** 149 * Installs default properties. 150 */ 151 protected void installDefaults() { 152 if (desktop.getBackground() == null || 153 desktop.getBackground() instanceof UIResource) { 154 desktop.setBackground(UIManager.getColor("Desktop.background")); 155 } 156 LookAndFeel.installProperty(desktop, "opaque", Boolean.TRUE); 157 } 158 159 /** 160 * Uninstalls default properties. 161 */ 162 protected void uninstallDefaults() { } 163 164 /** 165 * Installs the {@code PropertyChangeListener} returned from 166 * {@code createPropertyChangeListener} on the 167 * {@code JDesktopPane}. 168 * 169 * @since 1.5 170 * @see #createPropertyChangeListener 171 */ 172 protected void installListeners() { 173 pcl = createPropertyChangeListener(); 174 desktop.addPropertyChangeListener(pcl); 175 } 176 177 /** 178 * Uninstalls the {@code PropertyChangeListener} returned from 179 * {@code createPropertyChangeListener} from the 180 * {@code JDesktopPane}. 181 * 182 * @since 1.5 183 * @see #createPropertyChangeListener 184 */ 185 protected void uninstallListeners() { 186 desktop.removePropertyChangeListener(pcl); 187 pcl = null; 188 } 189 190 /** 191 * Installs desktop manager. 192 */ 193 protected void installDesktopManager() { 194 desktopManager = desktop.getDesktopManager(); 195 if(desktopManager == null) { 196 desktopManager = new BasicDesktopManager(); 197 desktop.setDesktopManager(desktopManager); 198 } 199 } 200 299 } 300 301 public void paint(Graphics g, JComponent c) {} 302 303 @Override 304 public Dimension getPreferredSize(JComponent c) { 305 return null; 306 } 307 308 @Override 309 public Dimension getMinimumSize(JComponent c) { 310 return new Dimension(0, 0); 311 } 312 313 @Override 314 public Dimension getMaximumSize(JComponent c) { 315 return new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE); 316 } 317 318 /** 319 * Returns the {@code PropertyChangeListener} to install on 320 * the {@code JDesktopPane}. 321 * 322 * @since 1.5 323 * @return The PropertyChangeListener that will be added to track 324 * changes in the desktop pane. 325 */ 326 protected PropertyChangeListener createPropertyChangeListener() { 327 return getHandler(); 328 } 329 330 private Handler getHandler() { 331 if (handler == null) { 332 handler = new Handler(); 333 } 334 return handler; 335 } 336 337 private class Handler implements PropertyChangeListener { 338 public void propertyChange(PropertyChangeEvent evt) { 339 String propertyName = evt.getPropertyName(); 340 if ("desktopManager" == propertyName) { |