001 /* 002 * Copyright 2002-2004 the original author or authors. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); you may not 005 * use this file except in compliance with the License. You may obtain a copy of 006 * the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 012 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 013 * License for the specific language governing permissions and limitations under 014 * the License. 015 */ 016 package org.springframework.richclient.command.support; 017 018 import javax.swing.JFrame; 019 020 import org.springframework.richclient.application.Application; 021 import org.springframework.richclient.application.ApplicationWindow; 022 import org.springframework.richclient.application.config.ApplicationWindowAware; 023 import org.springframework.richclient.command.ActionCommand; 024 025 /** 026 * A skeleton implementation of an action command that needs to be aware of the 027 * {@link ApplicationWindow} in which it resides. 028 * 029 * @author Keith Donald 030 */ 031 public abstract class ApplicationWindowAwareCommand extends ActionCommand implements ApplicationWindowAware { 032 033 private ApplicationWindow window; 034 035 /** 036 * Creates a new uninitialized {@code ApplicationWindowAwareCommand}. 037 * 038 */ 039 protected ApplicationWindowAwareCommand() { 040 //do nothing 041 } 042 043 /** 044 * Creates a new {@code ApplicationWindowAwareCommand} with the given command identifier. 045 * 046 * @param commandId The identifier of this command instance. This should be unique amongst 047 * all comands within the application. 048 */ 049 protected ApplicationWindowAwareCommand(String commandId) { 050 super(commandId); 051 } 052 053 /** 054 * {@inheritDoc} 055 */ 056 public void setApplicationWindow(ApplicationWindow window) { 057 this.window = window; 058 } 059 060 /** 061 * Returns the application window that this component was created within. 062 * @return The application window, or null if this property has not yet been initialized. 063 */ 064 protected ApplicationWindow getApplicationWindow() { 065 return window; 066 } 067 068 /** 069 * Returns the {@link JFrame} of the application window that this command belongs to. 070 * 071 * @return The control component of the application window, never null. 072 */ 073 protected JFrame getParentWindowControl() { 074 // allow subclasses to derive where the application window comes from 075 final ApplicationWindow applicationWindow = getApplicationWindow(); 076 if (applicationWindow == null) { 077 return Application.instance().getActiveWindow().getControl(); 078 } 079 return applicationWindow.getControl(); 080 } 081 082 }