001 /*
002 * Copyright 2002-2008 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.application;
017
018 import java.util.List;
019
020 import org.springframework.richclient.factory.ControlFactory;
021
022 /**
023 * An <code>ApplicationPage</code> is a container for <code>PageComponent</code> s.
024 */
025 public interface ApplicationPage extends ControlFactory {
026 String getId();
027
028 ApplicationWindow getWindow();
029
030 void addPageComponentListener(PageComponentListener listener);
031
032 void removePageComponentListener(PageComponentListener listener);
033
034 PageComponent getActiveComponent();
035
036 void setActiveComponent(PageComponent pageComponent);
037
038 /**
039 * Shows the {@link View} with the given id.
040 * <p>
041 * If the {@link View} is already opened, the view will be reused.
042 * <p>
043 * NOTE: this is NOT the same as calling <code>this.showView(id, null)</code>.
044 *
045 * @param id
046 * the view id, cannot be empty
047 *
048 * @return the {@link View} that is shown
049 */
050 View showView(String id);
051
052 /**
053 * Shows the {@link View} with the given id, and passes the input to the {@link View}, by calling
054 * {@link View#setInput(Object)}.
055 * <p>
056 * If the {@link View} is already opened, the view will be reused.
057 *
058 * @param id
059 * the view id, cannot be empty
060 * @param input
061 * the input, can be <code>null</code>
062 *
063 * @return the {@link View} that is shown
064 */
065 View showView(String id, Object input);
066
067 /**
068 * Returns the {@link View} with the given id. Returns <code>null</code> if no {@link View} with the given id is
069 * shown.
070 * <p>
071 * This method is "generified" to avoid extra casts when calling this method:
072 *
073 * <pre>
074 * ApplicationPage page = ...; // get a reference to the ApplicationPage
075 * InitialView initialView = page.getView("initialView");
076 * </pre>
077 *
078 * @param id
079 * the id, cannot be <code>null</code>
080 * @return the {@link View}, or <code>null</code>
081 */
082 <T extends View> T getView(String id);
083
084 void openEditor(Object editorInput);
085
086 boolean closeAllEditors();
087
088 boolean close();
089
090 boolean close(PageComponent pageComponent);
091
092 /**
093 * Returns the list of {@link PageComponent}s on this {@link ApplicationPage}.
094 *
095 * @return the page components
096 */
097 public List<PageComponent> getPageComponents();
098
099 }