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 java.awt.Component;
019 import java.awt.Container;
020
021 import javax.swing.JMenu;
022 import javax.swing.JPopupMenu;
023 import javax.swing.JSeparator;
024 import javax.swing.JToolBar;
025 import javax.swing.SwingConstants;
026
027 import org.springframework.richclient.command.GroupContainerPopulator;
028 import org.springframework.richclient.util.Assert;
029
030 /**
031 * A default implementation of the {@link GroupContainerPopulator} interface.
032 *
033 */
034 public class SimpleGroupContainerPopulator implements GroupContainerPopulator {
035
036 private final Container container;
037
038 /**
039 * Creates a new {@code SimpleGroupContainerPopulator} that will populate the given container.
040 *
041 * @param container The container to be populated. Must not be null.
042 *
043 * @throws IllegalArgumentException if {@code container} is null.
044 */
045 public SimpleGroupContainerPopulator(Container container) {
046 Assert.required(container, "container");
047 this.container = container;
048 }
049
050 /**
051 * {@inheritDoc}
052 */
053 public Container getContainer() {
054 return container;
055 }
056
057 /**
058 * {@inheritDoc}
059 */
060 public void add(Component c) {
061 container.add(c);
062 }
063
064 /**
065 * {@inheritDoc}
066 */
067 public void addSeparator() {
068 if (container instanceof JMenu) {
069 ((JMenu)container).addSeparator();
070 }
071 else if (container instanceof JPopupMenu) {
072 ((JPopupMenu)container).addSeparator();
073 }
074 else if (container instanceof JToolBar) {
075 ((JToolBar)container).addSeparator();
076 }
077 else {
078 container.add(new JSeparator(SwingConstants.VERTICAL));
079 }
080 }
081
082 /**
083 * Default implementation, no action is performed.
084 */
085 public void onPopulated() {
086 //do nothing
087 }
088
089 }