001    /*
002     * Copyright 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.support;
017    
018    import java.awt.Image;
019    import java.beans.PropertyChangeListener;
020    
021    import javax.swing.Icon;
022    
023    import org.springframework.binding.value.support.PropertyChangeSupport;
024    import org.springframework.richclient.application.ApplicationWindow;
025    import org.springframework.richclient.application.PageComponent;
026    import org.springframework.richclient.application.View;
027    import org.springframework.richclient.application.ViewDescriptor;
028    import org.springframework.richclient.command.ActionCommand;
029    import org.springframework.richclient.command.config.CommandButtonLabelInfo;
030    import org.springframework.richclient.command.support.ShowViewCommand;
031    import org.springframework.util.Assert;
032    
033    /**
034     * {@link ViewDescriptor} implementation for internal purposes (mostly testing).
035     * <p>
036     * This class accepts an existing {@link View} instance, and returns this in the {@link #createPageComponent()} method.
037     * <p>
038     * Normally you should never use this class directly.
039     * 
040     * @author Peter De Bruycker
041     */
042    public class SimpleViewDescriptor implements ViewDescriptor {
043    
044        private View view;
045        private String id;
046        private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);
047    
048        public SimpleViewDescriptor(String id, View view) {
049            Assert.notNull(view, "view cannot be null");
050    
051            this.id = id;
052            this.view = view;
053            
054            view.setDescriptor(this);
055        }
056    
057        public ActionCommand createShowViewCommand(ApplicationWindow window) {
058            return new ShowViewCommand(this, window);
059        }
060    
061        public CommandButtonLabelInfo getShowViewCommandLabel() {
062            return new CommandButtonLabelInfo(getDisplayName());
063        }
064    
065        public PageComponent createPageComponent() {
066            return view;
067        }
068    
069        public String getId() {
070            return id;
071        }
072    
073        public void addPropertyChangeListener(PropertyChangeListener listener) {
074            propertyChangeSupport.addPropertyChangeListener(listener);
075        }
076    
077        public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) {
078            propertyChangeSupport.addPropertyChangeListener(propertyName, listener);
079        }
080    
081        public void removePropertyChangeListener(PropertyChangeListener listener) {
082            propertyChangeSupport.removePropertyChangeListener(listener);
083        }
084    
085        public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener) {
086            propertyChangeSupport.removePropertyChangeListener(propertyName, listener);
087        }
088    
089        public String getCaption() {
090            return id;
091        }
092    
093        public String getDescription() {
094            return id;
095        }
096    
097        public String getDisplayName() {
098            return id;
099        }
100    
101        public Icon getIcon() {
102            return null;
103        }
104    
105        public Image getImage() {
106            return null;
107        }
108    
109    }