/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package nl.fontys.sofa.limo.view.wizard.leg.multimode; import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.text.MessageFormat; import java.util.ArrayList; import java.util.List; import javax.swing.JComponent; import nl.fontys.sofa.limo.api.service.status.StatusBarService; import nl.fontys.sofa.limo.domain.component.leg.MultiModeLeg; import nl.fontys.sofa.limo.view.util.LIMOResourceBundle; import org.openide.DialogDisplayer; import org.openide.WizardDescriptor; import org.openide.util.ImageUtilities; import org.openide.util.Lookup; /** * Multimode leg Wizard * * @author Pascal Lindner */ public final class MultimodeLegWizardAction implements ActionListener { private MultimodeLegTablePanel.FinishedMultiModeLegListener legListener; private MultiModeLeg originalLeg, leg; private boolean update; public MultimodeLegWizardAction(MultimodeLegTablePanel.FinishedMultiModeLegListener legListener) { this.legListener = legListener; this.originalLeg = new MultiModeLeg(); } public MultimodeLegWizardAction() { this.originalLeg = new MultiModeLeg(); } @Override public void actionPerformed(ActionEvent e) { List<WizardDescriptor.Panel<WizardDescriptor>> panels = new ArrayList<>(); if (!update) { this.leg = new MultiModeLeg(); } else { this.leg = new MultiModeLeg(originalLeg); //Creates a new leg with the same attributes. This way the original leg object keeped ontouched. } panels.add(new NameDescriptionIconHubTypeWizard()); panels.add(new MultimodeLegTableWizard()); String[] steps = new String[panels.size()]; for (int i = 0; i < panels.size(); i++) { Component c = panels.get(i).getComponent(); // Default step name to component name of panel. steps[i] = c.getName(); if (c instanceof JComponent) { // assume Swing components JComponent jc = (JComponent) c; jc.putClientProperty(WizardDescriptor.PROP_CONTENT_SELECTED_INDEX, i); jc.putClientProperty(WizardDescriptor.PROP_CONTENT_DATA, steps); jc.putClientProperty(WizardDescriptor.PROP_AUTO_WIZARD_STYLE, true); jc.putClientProperty(WizardDescriptor.PROP_CONTENT_DISPLAYED, true); jc.putClientProperty(WizardDescriptor.PROP_CONTENT_NUMBERED, true); } } WizardDescriptor wiz = new WizardDescriptor(new WizardDescriptor.ArrayIterator<>(panels)); wiz.setTitleFormat(new MessageFormat("{0}")); wiz.putProperty(WizardDescriptor.PROP_IMAGE, ImageUtilities.loadImage("icons/limo_wizard.png", true)); wiz.setTitle(LIMOResourceBundle.getString("MULTIMODE_LEG")); wiz.putProperty("leg", leg); wiz.putProperty("original_leg", originalLeg); if (DialogDisplayer.getDefault().notify(wiz) == WizardDescriptor.FINISH_OPTION) { leg = (MultiModeLeg) wiz.getProperty("leg"); originalLeg.deepOverwrite(leg); if (legListener != null) { //legListener can be null if the wizard is used for editing an exisitn gleg legListener.finishedLeg(originalLeg); Lookup.getDefault().lookup(StatusBarService.class).setMessage(LIMOResourceBundle.getString("MULTIMODE_LEG") + " ", StatusBarService.ACTION_CREATE, StatusBarService.STATE_SUCCESS, null); } } } /** * Defines whether the wizard is used for editing an existing leg or * creating a new leg * * @param leg Leg which should be updated */ public void setUpdate(MultiModeLeg leg) { this.originalLeg = leg; this.update = true; } }