//{HEADER
/**
* This class is part of jnex 'Nexirius Application Framework for Java'
*
* Copyright (C) Nexirius GmbH, CH-4450 Sissach, Switzerland (www.nexirius.ch)
*
* <p>This library is free software; you can redistribute it and/or<br>
* modify it under the terms of the GNU Lesser General Public<br>
* License as published by the Free Software Foundation; either<br>
* version 2.1 of the License, or (at your option) any later version.</p>
*
* <p>This library is distributed in the hope that it will be useful,<br>
* but WITHOUT ANY WARRANTY; without even the implied warranty of<br>
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU<br>
* Lesser General Public License for more details.</p>
*
* <p>You should have received a copy of the GNU Lesser General Public<br>
* License along with this library; if not, write to the Free Software<br>
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA</p>
* </blockquote>
*
* <p>
* Nexirius GmbH, hereby disclaims all copyright interest in<br>
* the library jnex' 'Nexirius Application Framework for Java' written<br>
* by Marcel Baumann.</p>
*/
//}HEADER
package com.nexirius.framework.dataviewer;
import com.nexirius.framework.datamodel.AskModel;
import com.nexirius.framework.gadgets.ArrayLayout;
import com.nexirius.framework.gadgets.ArrayPanel;
import com.nexirius.util.StringVector;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
/**
* this viewer is designed to show AskModel data
*
* @author Marcel Baumann
*/
public class AskViewer extends StructViewer {
public static final String viewerName = "AskViewer";
JButton yes;
JButton no;
JButton cancel;
public AskViewer(AskModel model) {
super(model);
}
public AskModel getAskModel() {
return (AskModel) getDataModel();
}
public String getViewerName() {
return viewerName;
}
public void defineDefaultButton(JRootPane rootPane) {
if (yes == null) {
create();
}
JButton defaultButton = getAskModel().getDefaultIsYes() ? yes : no;
defaultButton.setDefaultCapable(true);
defaultButton.requestFocus();
rootPane.setDefaultButton(defaultButton);
}
public void create() {
if (getLayout() == null) {
JPanel panel = new JPanel(new BorderLayout());
setJComponent(panel);
String text = "ERROR";
try {
text = getAskModel().getQuestionModel().getText();
} catch (Exception ex) {
ex.printStackTrace();
}
text = factory.getText(text);
StringVector sv = new StringVector(text, "\n");
JComponent q;
Icon icon = factory.getIcon("QUESTION");
if (sv.size() > 1) {
JPanel qpanel = new ArrayPanel(false, ArrayLayout.FULL_SIZE);
String s;
if (icon != null) {
qpanel.add(new JLabel(icon));
}
for (s = sv.firstItem(); s != null; s = sv.nextItem()) {
qpanel.add(new JLabel(s));
}
q = qpanel;
} else {
JLabel label = new JLabel(text);
if (icon != null) {
label.setIcon(icon);
}
q = label;
}
q.setBorder(new EmptyBorder(40, 40, 40, 40));
panel.add(q, BorderLayout.CENTER);
try {
JPanel buttonContainer = new JPanel();
yes = (JButton) factory.createDefaultViewer(getAskModel().getYesCommand()).getJComponent();
no = (JButton) factory.createDefaultViewer(getAskModel().getNoCommand()).getJComponent();
JButton buttons[];
if (getAskModel().getHasCancel()) {
buttons = new JButton[3];
cancel = (JButton) factory.createDefaultViewer(getAskModel().getCancelCommand()).getJComponent();
buttons[2] = cancel;
} else {
buttons = new JButton[2];
}
if (getAskModel().getDefaultIsYes()) {
buttons[0] = yes;
buttons[1] = no;
} else {
buttons[0] = no;
buttons[1] = yes;
}
factory.arrangeButtons(buttons, buttonContainer);
panel.add(BorderLayout.SOUTH, buttonContainer);
} catch (Exception ex) {
ex.printStackTrace();
}
} else {
super.create();
}
}
public void update() {
if (getLayout() == null) {
} else {
super.update();
}
}
}