diff options
author | zero <zero@66b5f39b-87a2-44c3-adb7-4b08653a3962> | 2009-11-26 04:00:50 +0000 |
---|---|---|
committer | zero <zero@66b5f39b-87a2-44c3-adb7-4b08653a3962> | 2009-11-26 04:00:50 +0000 |
commit | 59f95cbc7414f230aabf2165e2bba9f0b0cd2817 (patch) | |
tree | ae4f033b16083fe7d26b3414f53d1d435d6078d3 | |
parent | d0f3b3f63fb012e5a2330cb2d2a0e1db227bbc3d (diff) | |
download | uncertainfuture-59f95cbc7414f230aabf2165e2bba9f0b0cd2817.tar.gz uncertainfuture-59f95cbc7414f230aabf2165e2bba9f0b0cd2817.zip |
Jar creation file updated
git-svn-id: svn+ssh://10.37.55.100/usr/local/svn/uf@9 66b5f39b-87a2-44c3-adb7-4b08653a3962
-rw-r--r-- | java/build.jardesc | 101 | ||||
-rw-r--r-- | java/src/org/singinst/uf/view/MainWindow.java | 603 | ||||
-rw-r--r-- | web/UfApplet.jar | bin | 239028 -> 810983 bytes |
3 files changed, 307 insertions, 397 deletions
diff --git a/java/build.jardesc b/java/build.jardesc index b1607b4..1b24c57 100644 --- a/java/build.jardesc +++ b/java/build.jardesc @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <jardesc> - <jar path="/home/zero/code/ufuture/web/UfApplet.jar"/> + <jar path="/home/zero/media/code/uf/web/UfApplet.jar"/> <options buildIfNeeded="true" compress="true" descriptionLocation="/java/build.jardesc" exportErrors="true" exportWarnings="true" includeDirectoryEntries="false" overwrite="false" saveDescription="true" storeRefactorings="false" useSourceFolders="false"/> <storedRefactorings deprecationInfo="true" structuralOnly="false"/> <selectedProjects/> @@ -11,101 +11,10 @@ </sealing> </manifest> <selectedElements exportClassFiles="true" exportJavaFiles="false" exportOutputFolder="false"> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{NeedsCalcCache.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{NormalConstraint.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{OtherIaExtreme.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.presenter{ClippedCanvas.java"/> - <file path="/java/.project"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{AtLeastOneHappensCalculation.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.math{InvertableFunction.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{Axis.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{MooresLawNodeMetadataContentsFactory.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{SummarySource.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{ConclusionReportGenerator.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{LogBounds.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.presenter{AxisDirection.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{MooreAsymptote.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{ScalarSubIDString.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{MooreConstraint.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{Calculation.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.presenter{GraphCanvas.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{IncidentFunction.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.presenter{Completion.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.presenter{SimpleLine.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.presenter{AxisSample.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{ScalarValueHolder.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{ScalarRelation.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{ScalarValueDependency.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.presenter{SimpleStyle.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{NormalNodeMetadataContentsFactory.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{NodeIDString.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{PercentileDraggableLine.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{RescheduledEventsRelation.java"/> - <file path="/java/src/org/singinst/uf/model/UiTextConstant.java~"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{IncidentExtremeNodeMetadataContentsFactory.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{ScalarSchema.java"/> <file path="/java/.classpath"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.presenter{CanvasString.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.common"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{YearwiseCalculationRelation.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.presenter{DraggableLine.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{CumulativeNormalDistributionCalculation.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{ResearcherExtreme.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{ValueListener.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{AiRelation.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.presenter{NumericEntry.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.presenter{ClickableCurve.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.presenter{ScalarValuePointList.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{MooresLawData.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{CumulativeHazardsRelation.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.math{InvertedFunction.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{DisruptionRelation.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.math{MathUtilTest.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{Evaluable.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{YearExtremeNodeMetadataContentsFactory.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.presenter{LineBounded.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.presenter{MouseClickListener.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{NodeMetadataFactory.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{MultiplicationCalculation.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.presenter{LineBounds.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{CompositeCalculation.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{ModelUtil.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{ResearchersNodeMetadataContentsFactory.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.math{MathUtil.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{IncidentBounds.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{NodeMetadata.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.presenter{PlaneBounded.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.presenter{ProxyCanvas.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{UiTextConstant.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.presenter{UfHelp.java"/> - <javaElement handleIdentifier="=java/src<org.apache"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.presenter{ScaledCanvas.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.view"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{NodeMetadataBuilder.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{PowerFunction.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.presenter{MouseDragListener.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{CalculationRelation.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{OtherIaNodeMetadataContentsFactory.java"/> - <javaElement handleIdentifier="=java/src<org.singinst"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{GeneLearningExtreme.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.presenter{Status.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.presenter{PlaneBounds.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.presenter{HtmlUtil.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{SimpleColor.java"/> - <javaElement handleIdentifier="=java/src<org.apache.commons.math"/> - <javaElement handleIdentifier="=java/src<org"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{GeneLearningNodeMetadataContentsFactory.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.math{LinearTransform.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{Node.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.presenter{Store.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{MooreDraggableLine.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{HazardRateNodeMetadataContentsFactory.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.math{SimplePoint.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{IncidentLine.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.presenter{RelationPresentation.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{NeuromorphicAiRelation.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{UiText.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.presenter{GraphTransform.java"/> - <javaElement handleIdentifier="=java/src<org.singinst.uf.model{NotablePercentile.java"/> + <file path="/java/.project"/> + <javaElement handleIdentifier="=java/src"/> + <folder path="/java/libs"/> + <file path="/java/build.jardesc"/> </selectedElements> </jardesc> diff --git a/java/src/org/singinst/uf/view/MainWindow.java b/java/src/org/singinst/uf/view/MainWindow.java index f9fb9a9..5dbc4b6 100644 --- a/java/src/org/singinst/uf/view/MainWindow.java +++ b/java/src/org/singinst/uf/view/MainWindow.java @@ -1,301 +1,302 @@ -package org.singinst.uf.view;
-
-import java.awt.BorderLayout;
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Container;
-import java.awt.Dimension;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.MouseAdapter;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.swing.BorderFactory;
-import javax.swing.Box;
-import javax.swing.JButton;
-import javax.swing.JFormattedTextField;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.JProgressBar;
-import javax.swing.JSlider;
-import javax.swing.JTabbedPane;
-import javax.swing.RootPaneContainer;
-import javax.swing.SwingConstants;
-import javax.swing.border.Border;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
-
-import org.singinst.uf.model.ConclusionReportGenerator;
-import org.singinst.uf.model.NodeMetadata;
-import org.singinst.uf.model.NodeMetadataFactory;
-import org.singinst.uf.model.ScalarRelation;
-import org.singinst.uf.model.ScalarSchema;
-import org.singinst.uf.model.ScalarValueHolder;
-import org.singinst.uf.model.SummarySource;
-import org.singinst.uf.model.ValueListener;
-import org.singinst.uf.presenter.Completion;
-import org.singinst.uf.presenter.LineBounds;
-import org.singinst.uf.presenter.NumericEntry;
-import org.singinst.uf.presenter.Status;
-
-class MainWindow {
- // TODO5
- // Required for adding actionlisteners to the previous and next buttons
- private JTabbedPane pane;
-
- Container createContainer() {
- JPanel mainPanel = new JPanel(new BorderLayout());
- mainPanel.setBorder(border());
-
- List<NodeMetadata> nodeMetadataObjs = NodeMetadataFactory.createTheNetwork();
-
- final ArrayList<String> nodeNames = new ArrayList<String>();
- pane = new JTabbedPane();
-
- for (NodeMetadata nodeMetadata : nodeMetadataObjs) {
- pane.addTab(nodeMetadata.getNode().getIdString(), createPane(nodeMetadata, nodeNames));
- nodeNames.add(nodeMetadata.getNode().getIdString());
- }
- pane.setSelectedIndex(0);
-
- pane.addChangeListener(new ChangeListener() {
-
- public void stateChanged(ChangeEvent e) {
- AppletBrowser.getInstance().loadPage(nodeNames.get(pane.getSelectedIndex()));
- Status.singleton.setValue("");
- }
-
- });
-
- mainPanel.add(pane, BorderLayout.CENTER);
-
-// pane.setSelectedIndex(pane.getComponentCount() - 1);
- return mainPanel;
- }
-
- private Border border() {
- return BorderFactory.createEmptyBorder(3, 3, 3, 3);
- }
-
- private Border largeBorder() {
- return BorderFactory.createEmptyBorder(12, 12, 12, 12);
- }
-
- private Component createPane(final NodeMetadata nodeMetadata, final ArrayList<String> nodeNames) {
- Box vertical = Box.createVerticalBox();
- vertical.setBorder(border());
- vertical.setName(nodeMetadata.getNode().getIdString());
-
- Box summaries = Box.createVerticalBox();
- JPanel panePanel = new JPanel(new BorderLayout());
-
- panePanel.add(createUserQuestion(nodeMetadata, nodeNames), BorderLayout.NORTH);
- for (ScalarSchema simpleScalar : nodeMetadata.getSimpleScalars()) {
- vertical.add(createGraph(simpleScalar));
- for (Component summary : createSummaries(simpleScalar)) {
- summaries.add(summary);
- }
- }
- for (ScalarRelation relation : nodeMetadata.getScalarRelations()) {
- vertical.add(createGraph(relation));
- for (Component summary : createSummaries(relation)) {
- summaries.add(summary);
- }
- }
-
- //if (nodeMetadata.getNode().getIdString() != "A6")
- addProperties(nodeMetadata, vertical, nodeNames);
- vertical.add(summaries);
-
- Box statusBox = Box.createHorizontalBox();
- statusBox.setBorder(largeBorder());
- final JLabel label = new JLabel("Application loaded.");
- statusBox.add(label);
- Status.singleton.addListener(new PropertyChangeListener() {
-
- public void propertyChange(PropertyChangeEvent evt) {
- label.setText(Status.singleton.getValue());
- }
-
- });
- vertical.add(statusBox);
-
-// Box helpBox = Box.createHorizontalBox();
-// helpBox.setBorder(largeBorder());
-// JButton helpButton = new JButton("Help");
-// helpButton.addActionListener(new ActionListener() {
-// public void actionPerformed(ActionEvent e) {
-// SwingHelp.getInstance().help(nodeMetadata.getUserText().getHelp());
-// }
-// });
-// helpBox.add(helpButton);
-// vertical.add(helpBox);
-
- vertical.add(Box.createGlue());
- panePanel.add(vertical, BorderLayout.CENTER);
- return panePanel;
- }
-
- private void addProperties(NodeMetadata nodeMetadata, Box vertical, final ArrayList<String> nodeNames) {
- Box properties = null;
-
- int i = 0;
- for (ScalarSchema scalarSchema : nodeMetadata.getScalars()) {
- if (i % 3 == 0) {
- properties = attachHorizontalBox(vertical);
- }
- Component newProp = createPropertyPanel(scalarSchema);
- if (newProp != null) {
- properties.add(newProp);
- i++;
- }
- }
- }
-
- private Box attachHorizontalBox(Box vertical) {
- Box properties = Box.createHorizontalBox();
- vertical.add(properties);
- return properties;
- }
-
- private Component createGraph(ScalarRelation relation) {
- return new Graph(relation).getPanel();
- }
-
-
- private List<Component> createSummaries(final SummarySource summarySource) {
- final List<Component> labels = new ArrayList<Component>();
- for (final ConclusionReportGenerator conclusionReportGenerator : summarySource.getConclusionGenerators()) {
- final JLabel label = new JLabel("<html>Calculating...<br></html>");
- label.setMinimumSize(new Dimension(100, 15));
- label.setHorizontalAlignment(SwingConstants.CENTER);
- label.setAlignmentX(0.5f);
- labels.add(label);
- for (final ScalarValueHolder scalarValueHolder : summarySource.getScalarValues()) {
- scalarValueHolder.addUpdateListener(new ValueListener() {
- public void fireUpdate(double value) {
- String text = conclusionReportGenerator.getText(scalarValueHolder, value);
- label.setText("<html>" + text + "</html>");
- }
- });
- }
- }
- return labels;
- }
-
- private Component createUserQuestion(NodeMetadata nodeMetadata, final ArrayList<String> nodeNames) {
- //JLabel question = new JLabel(nodeMetadata.getUserText().getQuestion(), SwingConstants.CENTER);
- JLabel question = new JLabel(nodeMetadata.getUserText().getQuestion());
- //question.setEditable(false);
- question.setForeground(Color.RED);
- //question.setLineWrap(true);
- //question.setWrapStyleWord(true);
- question.setMaximumSize(question.getPreferredSize());
-
- JPanel prevQuestionNextBox = new JPanel(new BorderLayout());//Box.createHorizontalBox();
-
- JButton prev = new JButton("Previous");
- prev.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- int index = pane.getSelectedIndex();
- if (index > 0) {
- AppletBrowser.getInstance().loadPage(nodeNames.get(index-1));
- pane.setSelectedIndex(index-1);
- }
- Status.singleton.setValue("");
- }
-
- });
- prevQuestionNextBox.add(prev, BorderLayout.WEST);
-
- prevQuestionNextBox.add(question, BorderLayout.CENTER);
-
- JButton next = new JButton("Next");
- next.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- int index = pane.getSelectedIndex();
- if (index+1 < nodeNames.size()) {
- AppletBrowser.getInstance().loadPage(nodeNames.get(index+1));
- pane.setSelectedIndex(index+1);
- }
- Status.singleton.setValue("");
- }
-
- });
- prevQuestionNextBox.add(next, BorderLayout.EAST);
-
- return prevQuestionNextBox;
- }
-
- /**
- *
- *
- * @param scalarSchema
- * @return
- * THe new property to add if scalarSchema.visibleProperty is set to true, else returns null.
- */
- private Component createPropertyPanel(ScalarSchema scalarSchema) {
- if (!scalarSchema.displayProperty())
- return null;
- JFormattedTextField propertyValueDisplay = new JFormattedTextField(
- NumericEntry.getScalarFormat());
- propertyValueDisplay.setColumns(NumericEntry.maxColumns());
- propertyValueDisplay.setHorizontalAlignment(SwingConstants.RIGHT);
- propertyValueDisplay.setMaximumSize(propertyValueDisplay.getMinimumSize());
-
- Box propertyPanel = Box.createHorizontalBox();
- propertyPanel.add(new JLabel("<html>" + scalarSchema.getPrefix() + "</html>", SwingConstants.RIGHT));
- propertyPanel.add(propertyValueDisplay);
- propertyPanel.add(new JLabel(scalarSchema.getUnit() + scalarSchema.getSuffix()));
- propertyPanel.setAlignmentX(0.5f);
- propertyPanel.setBorder(largeBorder());
- propertyPanel.setMaximumSize(propertyPanel.getPreferredSize());
-
- new TextScalarBinder().bind(scalarSchema.getScalarValueHolder(), propertyValueDisplay);
- propertyPanel.setPreferredSize(propertyPanel.getMinimumSize());
- return propertyPanel;
- }
-
- private Component createGraph(ScalarSchema scalarSchema) {
- LineBounds bounds = scalarSchema.getLineBounds();
- JSlider slider = new JSlider((int) bounds.getLowerBound(), (int) bounds.getUpperBound());
- new RangeScalarBinder().bind(scalarSchema.getScalarValueHolder(), slider.getModel());
- return slider;
- }
-
- public Component createGlassPane(final RootPaneContainer container) {
- final JPanel glassPane = new JPanel();
- final JProgressBar bar = new JProgressBar();
- final JLabel label = new JLabel();
- glassPane.add(label);
- glassPane.add(bar);
- glassPane.addMouseListener(new MouseAdapter() {});
- final Completion completion = Completion.getInstance();
- // TODO5 update listener
- completion.addUpdateListener(new ValueListener() {
- public void fireUpdate(double value) {
- if (value == 0) {
- container.setGlassPane(glassPane);
- glassPane.setVisible(true);
- }
-
- int completed = completion.getCompleted();
- int numStages = completion.getNumStages();
- if (completed < numStages) {
- label.setText(completion.getDisplay());
- bar.setMaximum(numStages);
- bar.setValue(completed);
- } else {
- glassPane.setVisible(false);
- }
- }
-
- });
- return glassPane;
- }
-
-
-}
+package org.singinst.uf.view; + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.Container; +import java.awt.Dimension; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseAdapter; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.util.ArrayList; +import java.util.List; + +import javax.swing.BorderFactory; +import javax.swing.Box; +import javax.swing.JButton; +import javax.swing.JFormattedTextField; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JProgressBar; +import javax.swing.JSlider; +import javax.swing.JTabbedPane; +import javax.swing.RootPaneContainer; +import javax.swing.SwingConstants; +import javax.swing.border.Border; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; + +import org.singinst.uf.model.ConclusionReportGenerator; + +import org.singinst.uf.model.NodeMetadata; +import org.singinst.uf.model.NodeMetadataFactory; +import org.singinst.uf.model.ScalarRelation; +import org.singinst.uf.model.ScalarSchema; +import org.singinst.uf.model.ScalarValueHolder; +import org.singinst.uf.model.SummarySource; +import org.singinst.uf.model.ValueListener; +import org.singinst.uf.presenter.Completion; +import org.singinst.uf.presenter.LineBounds; +import org.singinst.uf.presenter.NumericEntry; +import org.singinst.uf.presenter.Status; + +class MainWindow { + // TODO5 + // Required for adding actionlisteners to the previous and next buttons + private JTabbedPane pane; + + Container createContainer() { + JPanel mainPanel = new JPanel(new BorderLayout()); + mainPanel.setBorder(border()); + + List<NodeMetadata> nodeMetadataObjs = NodeMetadataFactory.createTheNetwork(); + + final ArrayList<String> nodeNames = new ArrayList<String>(); + pane = new JTabbedPane(); + + for (NodeMetadata nodeMetadata : nodeMetadataObjs) { + pane.addTab(nodeMetadata.getNode().getIdString(), createPane(nodeMetadata, nodeNames)); + nodeNames.add(nodeMetadata.getNode().getIdString()); + } + pane.setSelectedIndex(0); + + pane.addChangeListener(new ChangeListener() { + + public void stateChanged(ChangeEvent e) { + AppletBrowser.getInstance().loadPage(nodeNames.get(pane.getSelectedIndex())); + Status.singleton.setValue(""); + } + + }); + + mainPanel.add(pane, BorderLayout.CENTER); + +// pane.setSelectedIndex(pane.getComponentCount() - 1); + return mainPanel; + } + + private Border border() { + return BorderFactory.createEmptyBorder(3, 3, 3, 3); + } + + private Border largeBorder() { + return BorderFactory.createEmptyBorder(12, 12, 12, 12); + } + + private Component createPane(final NodeMetadata nodeMetadata, final ArrayList<String> nodeNames) { + Box vertical = Box.createVerticalBox(); + vertical.setBorder(border()); + vertical.setName(nodeMetadata.getNode().getIdString()); + + Box summaries = Box.createVerticalBox(); + JPanel panePanel = new JPanel(new BorderLayout()); + + panePanel.add(createUserQuestion(nodeMetadata, nodeNames), BorderLayout.NORTH); + for (ScalarSchema simpleScalar : nodeMetadata.getSimpleScalars()) { + vertical.add(createGraph(simpleScalar)); + for (Component summary : createSummaries(simpleScalar)) { + summaries.add(summary); + } + } + for (ScalarRelation relation : nodeMetadata.getScalarRelations()) { + vertical.add(createGraph(relation)); + for (Component summary : createSummaries(relation)) { + summaries.add(summary); + } + } + + //if (nodeMetadata.getNode().getIdString() != "A6") + addProperties(nodeMetadata, vertical, nodeNames); + vertical.add(summaries); + + Box statusBox = Box.createHorizontalBox(); + statusBox.setBorder(largeBorder()); + final JLabel label = new JLabel("Application loaded."); + statusBox.add(label); + Status.singleton.addListener(new PropertyChangeListener() { + + public void propertyChange(PropertyChangeEvent evt) { + label.setText(Status.singleton.getValue()); + } + + }); + vertical.add(statusBox); + +// Box helpBox = Box.createHorizontalBox(); +// helpBox.setBorder(largeBorder()); +// JButton helpButton = new JButton("Help"); +// helpButton.addActionListener(new ActionListener() { +// public void actionPerformed(ActionEvent e) { +// SwingHelp.getInstance().help(nodeMetadata.getUserText().getHelp()); +// } +// }); +// helpBox.add(helpButton); +// vertical.add(helpBox); + + vertical.add(Box.createGlue()); + panePanel.add(vertical, BorderLayout.CENTER); + return panePanel; + } + + private void addProperties(NodeMetadata nodeMetadata, Box vertical, final ArrayList<String> nodeNames) { + Box properties = null; + + int i = 0; + for (ScalarSchema scalarSchema : nodeMetadata.getScalars()) { + if (i % 3 == 0) { + properties = attachHorizontalBox(vertical); + } + Component newProp = createPropertyPanel(scalarSchema); + if (newProp != null) { + properties.add(newProp); + i++; + } + } + } + + private Box attachHorizontalBox(Box vertical) { + Box properties = Box.createHorizontalBox(); + vertical.add(properties); + return properties; + } + + private Component createGraph(ScalarRelation relation) { + return new Graph(relation).getPanel(); + } + + + private List<Component> createSummaries(final SummarySource summarySource) { + final List<Component> labels = new ArrayList<Component>(); + for (final ConclusionReportGenerator conclusionReportGenerator : summarySource.getConclusionGenerators()) { + final JLabel label = new JLabel("<html>Calculating...<br></html>"); + label.setMinimumSize(new Dimension(100, 15)); + label.setHorizontalAlignment(SwingConstants.CENTER); + label.setAlignmentX(0.5f); + labels.add(label); + for (final ScalarValueHolder scalarValueHolder : summarySource.getScalarValues()) { + scalarValueHolder.addUpdateListener(new ValueListener() { + public void fireUpdate(double value) { + String text = conclusionReportGenerator.getText(scalarValueHolder, value); + label.setText("<html>" + text + "</html>"); + } + }); + } + } + return labels; + } + + private Component createUserQuestion(NodeMetadata nodeMetadata, final ArrayList<String> nodeNames) { + //JLabel question = new JLabel(nodeMetadata.getUserText().getQuestion(), SwingConstants.CENTER); + JLabel question = new JLabel(nodeMetadata.getUserText().getQuestion()); + //question.setEditable(false); + question.setForeground(Color.RED); + //question.setLineWrap(true); + //question.setWrapStyleWord(true); + question.setMaximumSize(question.getPreferredSize()); + + JPanel prevQuestionNextBox = new JPanel(new BorderLayout());//Box.createHorizontalBox(); + + JButton prev = new JButton("Previous"); + prev.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + int index = pane.getSelectedIndex(); + if (index > 0) { + AppletBrowser.getInstance().loadPage(nodeNames.get(index-1)); + pane.setSelectedIndex(index-1); + } + Status.singleton.setValue(""); + } + + }); + prevQuestionNextBox.add(prev, BorderLayout.WEST); + + prevQuestionNextBox.add(question, BorderLayout.CENTER); + + JButton next = new JButton("Next"); + next.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + int index = pane.getSelectedIndex(); + if (index+1 < nodeNames.size()) { + AppletBrowser.getInstance().loadPage(nodeNames.get(index+1)); + pane.setSelectedIndex(index+1); + } + Status.singleton.setValue(""); + } + + }); + prevQuestionNextBox.add(next, BorderLayout.EAST); + + return prevQuestionNextBox; + } + + /** + * + * + * @param scalarSchema + * @return + * THe new property to add if scalarSchema.visibleProperty is set to true, else returns null. + */ + private Component createPropertyPanel(ScalarSchema scalarSchema) { + if (!scalarSchema.displayProperty()) + return null; + JFormattedTextField propertyValueDisplay = new JFormattedTextField( + NumericEntry.getScalarFormat()); + propertyValueDisplay.setColumns(NumericEntry.maxColumns()); + propertyValueDisplay.setHorizontalAlignment(SwingConstants.RIGHT); + propertyValueDisplay.setMaximumSize(propertyValueDisplay.getMinimumSize()); + + Box propertyPanel = Box.createHorizontalBox(); + propertyPanel.add(new JLabel("<html>" + scalarSchema.getPrefix() + "</html>", SwingConstants.RIGHT)); + propertyPanel.add(propertyValueDisplay); + propertyPanel.add(new JLabel(scalarSchema.getUnit() + scalarSchema.getSuffix())); + propertyPanel.setAlignmentX(0.5f); + propertyPanel.setBorder(largeBorder()); + propertyPanel.setMaximumSize(propertyPanel.getPreferredSize()); + + new TextScalarBinder().bind(scalarSchema.getScalarValueHolder(), propertyValueDisplay); + propertyPanel.setPreferredSize(propertyPanel.getMinimumSize()); + return propertyPanel; + } + + private Component createGraph(ScalarSchema scalarSchema) { + LineBounds bounds = scalarSchema.getLineBounds(); + JSlider slider = new JSlider((int) bounds.getLowerBound(), (int) bounds.getUpperBound()); + new RangeScalarBinder().bind(scalarSchema.getScalarValueHolder(), slider.getModel()); + return slider; + } + + public Component createGlassPane(final RootPaneContainer container) { + final JPanel glassPane = new JPanel(); + final JProgressBar bar = new JProgressBar(); + final JLabel label = new JLabel(); + glassPane.add(label); + glassPane.add(bar); + glassPane.addMouseListener(new MouseAdapter() {}); + final Completion completion = Completion.getInstance(); + // TODO5 update listener + completion.addUpdateListener(new ValueListener() { + public void fireUpdate(double value) { + if (value == 0) { + container.setGlassPane(glassPane); + glassPane.setVisible(true); + } + + int completed = completion.getCompleted(); + int numStages = completion.getNumStages(); + if (completed < numStages) { + label.setText(completion.getDisplay()); + bar.setMaximum(numStages); + bar.setValue(completed); + } else { + glassPane.setVisible(false); + } + } + + }); + return glassPane; + } + + +} diff --git a/web/UfApplet.jar b/web/UfApplet.jar Binary files differindex c8c3526..f1251ef 100644 --- a/web/UfApplet.jar +++ b/web/UfApplet.jar |