Java tutorial
/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package ro.nextreports.designer.wizrep; import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import java.util.LinkedList; import java.util.List; import javax.swing.AbstractAction; import javax.swing.DefaultListModel; import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JOptionPane; import javax.swing.JScrollPane; import javax.swing.JToolBar; import javax.swing.SwingUtilities; import ro.nextreports.designer.property.FormattingConditionsPanel; import ro.nextreports.designer.ui.wizard.WizardPanel; import ro.nextreports.designer.util.I18NSupport; import ro.nextreports.designer.util.ImageUtil; import ro.nextreports.designer.util.Show; import com.jgoodies.looks.HeaderStyle; import com.jgoodies.looks.Options; public class SelectAlarmSettingsWizardPanel extends WizardPanel { private FormattingConditionsPanel panel; private DefaultListModel model; private JList list; private JCheckBox shadow; private Dimension dim = new Dimension(100, 200); public SelectAlarmSettingsWizardPanel() { super(); banner.setTitle(I18NSupport.getString("wizard.panel.step", 5, 5) + I18NSupport.getString("wizard.panel.alarm.title")); banner.setSubtitle(I18NSupport.getString("wizard.panel.alarm.subtitle")); init(); } @Override public void onDisplay() { } @Override public boolean hasNext() { return false; } @Override public boolean validateNext(List<String> messages) { return true; } @Override public WizardPanel getNextPanel() { return null; } @Override public boolean canFinish() { return true; } @Override public boolean validateFinish(List<String> messages) { if (panel.getFinalRenderConditions().getConditions().size() == 0) { messages.add(I18NSupport.getString("wizard.panel.alarm.conditions")); return false; } if (model.getSize() == 0) { messages.add(I18NSupport.getString("wizard.panel.alarm.messages")); return false; } if (panel.getFinalRenderConditions().getConditions().size() != model.getSize()) { messages.add(I18NSupport.getString("wizard.panel.alarm.error")); return false; } context.setAttribute(WizardConstants.ALARM_CONDITIONS, panel.getFinalRenderConditions()); context.setAttribute(WizardConstants.ALARM_MESSAGES, getMessages()); context.setAttribute(WizardConstants.ALARM_SHADOW, shadow.isSelected()); WizardUtil.openReport(context, null); return true; } @Override public void onFinish() { } private void init() { setLayout(new GridBagLayout()); shadow = new JCheckBox(I18NSupport.getString("wizard.panel.display.shadow")); panel = new FormattingConditionsPanel(null, I18NSupport.getString("wizard.panel.alarm.conditions.name")); model = new DefaultListModel(); list = new JList(); list.setModel(model); JScrollPane scrollPane = new JScrollPane(list); scrollPane.setPreferredSize(dim); JToolBar toolBar = new JToolBar(); toolBar.putClientProperty("JToolBar.isRollover", Boolean.TRUE); // hide buttons borders toolBar.putClientProperty(Options.HEADER_STYLE_KEY, HeaderStyle.BOTH); toolBar.add(new AbstractAction() { public Object getValue(String key) { if (AbstractAction.SMALL_ICON.equals(key)) { return ImageUtil.getImageIcon("add"); } else if (AbstractAction.SHORT_DESCRIPTION.equals(key)) { return I18NSupport.getString("wizard.panel.alarm.message.add"); } return super.getValue(key); } public void actionPerformed(ActionEvent e) { add(); } }); toolBar.add(new AbstractAction() { public Object getValue(String key) { if (AbstractAction.SMALL_ICON.equals(key)) { return ImageUtil.getImageIcon("edit"); } else if (AbstractAction.SHORT_DESCRIPTION.equals(key)) { return I18NSupport.getString("wizard.panel.alarm.message.edit"); } return super.getValue(key); } public void actionPerformed(ActionEvent e) { modify(); } }); toolBar.add(new AbstractAction() { public Object getValue(String key) { if (AbstractAction.SMALL_ICON.equals(key)) { return ImageUtil.getImageIcon("delete"); } else if (AbstractAction.SHORT_DESCRIPTION.equals(key)) { return I18NSupport.getString("wizard.panel.alarm.message.delete"); } return super.getValue(key); } public void actionPerformed(ActionEvent e) { delete(); } }); toolBar.add(new JLabel(I18NSupport.getString("wizard.panel.alarm.messages.name"))); JLabel imageLabel = new JLabel(ImageUtil.getImageIcon("alarm_main")); imageLabel.setPreferredSize(new Dimension(300, 80)); add(panel, new GridBagConstraints(0, 0, 1, 1, 1.0, 1.0, GridBagConstraints.WEST, GridBagConstraints.BOTH, new Insets(5, 5, 5, 5), 0, 0)); add(toolBar, new GridBagConstraints(0, 1, 1, 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 0, 5), 0, 0)); add(scrollPane, new GridBagConstraints(0, 2, 1, 1, 1.0, 1.0, GridBagConstraints.WEST, GridBagConstraints.BOTH, new Insets(0, 5, 5, 5), 0, 0)); add(shadow, new GridBagConstraints(0, 3, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0)); add(imageLabel, new GridBagConstraints(1, 0, 1, 4, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(5, 0, 5, 5), 0, 0)); } private void add() { String message = JOptionPane.showInputDialog( SwingUtilities.getWindowAncestor(SelectAlarmSettingsWizardPanel.this), I18NSupport.getString("wizard.panel.alarm.message.enter"), ""); if (message == null) { return; } model.addElement(message); } private void modify() { int index = list.getSelectedIndex(); if (index == -1) { Show.info(SwingUtilities.getWindowAncestor(SelectAlarmSettingsWizardPanel.this), I18NSupport.getString("wizard.panel.alarm.message.select")); return; } String s = (String) list.getSelectedValue(); String message = JOptionPane.showInputDialog( SwingUtilities.getWindowAncestor(SelectAlarmSettingsWizardPanel.this), I18NSupport.getString("wizard.panel.alarm.message.edit"), s); if (message == null) { return; } model.set(index, message); } private void delete() { String s = (String) list.getSelectedValue(); if (s == null) { Show.info(SwingUtilities.getWindowAncestor(SelectAlarmSettingsWizardPanel.this), I18NSupport.getString("wizard.panel.alarm.message.select")); return; } int option = JOptionPane.showConfirmDialog( SwingUtilities.getWindowAncestor(SelectAlarmSettingsWizardPanel.this), I18NSupport.getString("wizard.panel.alarm.message.delete") + ": " + s, I18NSupport.getString("wizard.panel.alarm.message.delete"), JOptionPane.YES_NO_OPTION); if (option == JOptionPane.YES_OPTION) { model.removeElement(s); } } private List<String> getMessages() { List<String> messages = new LinkedList<String>(); for (int i = 0, size = model.getSize(); i < size; i++) { messages.add((String) model.elementAt(i)); } return messages; } }