001 /* This file is part of the project "Hilbert II" - http://www.qedeq.org
002 *
003 * Copyright 2000-2013, Michael Meyling <mime@qedeq.org>.
004 *
005 * "Hilbert II" is free software; you can redistribute
006 * it and/or modify it under the terms of the GNU General Public
007 * License as published by the Free Software Foundation; either
008 * version 2 of the License, or (at your option) any later version.
009 *
010 * This program is distributed in the hope that it will be useful,
011 * but WITHOUT ANY WARRANTY; without even the implied warranty of
012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
013 * GNU General Public License for more details.
014 */
015
016 package org.qedeq.gui.se.pane;
017
018 import java.awt.Component;
019 import java.awt.Dimension;
020 import java.awt.GridLayout;
021
022 import javax.swing.BorderFactory;
023 import javax.swing.JComponent;
024 import javax.swing.JPanel;
025 import javax.swing.JScrollPane;
026 import javax.swing.JTextArea;
027 import javax.swing.JTextField;
028 import javax.swing.ScrollPaneConstants;
029
030 import org.qedeq.kernel.bo.common.QedeqBo;
031
032 import com.jgoodies.forms.builder.DefaultFormBuilder;
033 import com.jgoodies.forms.layout.FormLayout;
034
035 /**
036 * View for {@link QedeqBo}s.
037 *
038 * @version $Revision: 1.5 $
039 * @author Michael Meyling
040 */
041
042 public class ModulePropertiesPane extends JPanel {
043
044 /** Reference to module properties. */
045 private QedeqBo prop;
046
047 /** State of module. */
048 private JTextField state;
049
050 /** Module name. */
051 private JTextField name;
052
053 /** Module rule version. */
054 private JTextField ruleVersion;
055
056 /** URL of module. */
057 private JTextArea url;
058
059 /** Module errors and warnings. */
060 private JTextField errorsAndWarnings;
061
062
063 /**
064 * Creates new Panel.
065 */
066 public ModulePropertiesPane() {
067 super();
068 this.prop = null;
069 setupView();
070 updateView();
071 }
072
073 private JComponent buildTestPanel() {
074 FormLayout layout = new FormLayout(
075 "right:pref, 5dlu, fill:50dlu:grow"); // columns
076 // + "pref, 3dlu, pref"); // rows
077
078 DefaultFormBuilder builder = new DefaultFormBuilder(layout);
079 builder.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
080 builder.getPanel().setOpaque(false);
081 builder.setDefaultDialogBorder();
082
083 builder.append("State");
084 state = createTextField("", false);
085 builder.append(state);
086
087 builder.append("Name");
088 name = createTextField("", false);
089 builder.append(name);
090
091 builder.append("Rule Version");
092 ruleVersion = createTextField("", false);
093 builder.append(ruleVersion);
094
095 builder.append("URL");
096 url = new JTextArea();
097 url.setEditable(false);
098 url.setLineWrap(false);
099 builder.append(wrapWithScrollPane(url));
100
101 builder.append("Problems");
102 errorsAndWarnings = createTextField("", false);
103 builder.append(errorsAndWarnings);
104
105 return builder.getPanel();
106 }
107
108 /**
109 * Assembles the gui components of the panel.
110 */
111 public final void setupView() {
112 this.setLayout(new GridLayout(1, 1));
113 this.add(buildTestPanel());
114 this.setPreferredSize(new Dimension(200, 200));
115 }
116
117 public void setModel(final QedeqBo prop) {
118 this.prop = prop;
119 updateView();
120 }
121
122 public QedeqBo getModel() {
123 return this.prop;
124 }
125
126
127
128 /**
129 * Update from model.
130 */
131 public void updateView() {
132
133 if (prop != null) {
134 state.setText(prop.getStateDescription());
135 name.setText(prop.getName());
136 ruleVersion.setText(prop.getRuleVersion());
137 url.setText(prop.getUrl().toString());
138 errorsAndWarnings.setText(prop.getErrors().size() + " errors, " + prop.getWarnings().size() + " warnings");
139 } else {
140 state.setText("");
141 name.setText("");
142 ruleVersion.setText("");
143 url.setText("");
144 errorsAndWarnings.setText("");
145 }
146 invalidate();
147 repaint();
148 }
149
150 private JTextField createTextField(final String selectedText, final boolean editable) {
151 JTextField combo = new JTextField(selectedText);
152 combo.setEditable(editable);
153 return combo;
154 }
155
156 private Component wrapWithScrollPane(final Component c) {
157 return new JScrollPane(
158 c,
159 ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER,
160 ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
161 }
162
163
164
165 }
|