ModulePropertiesPane.java
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(0000));
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(11));
113         this.add(buildTestPanel());
114         this.setPreferredSize(new Dimension(200200));
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 }