| /home/volc/47/gshute/netbeans/CS5741Source/swing/components/Info.java |
package swing.components;
import appBase.AppBase;
import conversion.NamedNamer;
import conversion.ToStringConverter;
import gui.Wrapper;
import java.awt.BorderLayout;
import java.net.URL;
import javax.swing.JComponent;
import javax.swing.JPanel;
import mvc.Callback;
import mvc.CardView;
import mvc.Choice;
import mvc.Choice.Model;
import mvc.ComboBoxChooser;
import mvc.HTMLView;
import mvc.NamedDirectModel;
import mvc.NamedModel;
import mvc.TabbedChooser;
import swing.components.button.Button;
import swing.components.checkbox.CheckBox;
import swing.components.combobox.ComboBox;
import swing.components.label.Label;
import swing.components.passwordfield.PasswordField;
import swing.components.radiobutton.RadioButton;
import swing.components.slider.Slider;
import swing.components.numberspinner.Spinner;
import swing.components.table.Table;
import swing.components.textarea.TextArea;
import swing.components.textfield.TextField;
import swing.components.togglebutton.ToggleButton;
class URLModel
extends NamedDirectModel<URL> {
private mvc.Model<SwingComponent> componentModel;
private mvc.Model<String> topicModel;
public URLModel(mvc.Model<SwingComponent> cm, mvc.Model<String> tm) {
super("URL Model");
componentModel = cm;
topicModel = tm;
Callback sourcesCallback = new Callback() {
public void execute() {
notifyObservers();
}
};
componentModel.addCallback(sourcesCallback);
topicModel.addCallback(sourcesCallback);
}
public URL getValue() {
String topic = topicModel.getValue();
return componentModel.getValue().getURL(topic);
}
}
@author
public class Info
extends AppBase {
private Model<String> topicModel;
private Model<SwingComponent> componentModel;
private Choice<String> createTopicChoice() {
String[] topics = {
"use",
"config",
"behavior",
"more"
};
return new Choice<String>(topics);
}
private Choice<SwingComponent> createComponentChoice() {
SwingComponent[] components = {
new Label(),
new Button(),
new ToggleButton(),
new RadioButton(),
new Slider(),
new Spinner(),
new CheckBox(),
new TextField(),
new PasswordField(),
new ComboBox(),
new TextArea(),
new Table()
};
return new Choice<SwingComponent>(components);
}
public String getTitle() {
return "Components Information";
}
public JComponent createContentPane() {
Choice<String> topicChoice = createTopicChoice();
final Choice.Model<String> topicModel =
topicChoice.createModel("Topics");
TabbedChooser<String> topicChooser =
new TabbedChooser<String>(topicModel,
new ToStringConverter(), 400);
Choice<SwingComponent> componentChoice =
createComponentChoice();
final Choice.Model<SwingComponent> componentModel =
componentChoice.createModel("Components");
ComboBoxChooser<SwingComponent> componentChooser =
new ComboBoxChooser<SwingComponent>(
componentModel, new NamedNamer<SwingComponent>());
CardView<SwingComponent> componentView =
new CardView<SwingComponent>(componentModel);
NamedModel<URL> urlModel =
new URLModel(componentModel, topicModel);
HTMLView urlView = new HTMLView(urlModel);
JPanel leftPanel = new JPanel(new BorderLayout());
leftPanel.add(Wrapper.paneled(componentChooser),
BorderLayout.NORTH);
JComponent componentPanel = Wrapper.unwrapped(componentView);
leftPanel.add(componentPanel, BorderLayout.CENTER);
JPanel rightPanel = new JPanel(new BorderLayout());
rightPanel.add(Wrapper.unwrapped(topicChooser),
BorderLayout.NORTH);
rightPanel.add(Wrapper.scrolled(urlView, 600, 400),
BorderLayout.CENTER);
JPanel contentPane = new JPanel(new BorderLayout());
contentPane.add(leftPanel, BorderLayout.WEST);
contentPane.add(rightPanel, BorderLayout.CENTER);
return contentPane;
}
public static void main(String[] args) {
Info app = new Info();
app.installApplication();
}
}