package nl.fontys.sofa.limo.view.node.bean; import java.awt.event.ActionEvent; import java.beans.BeanInfo; import java.beans.IntrospectionException; import java.util.ArrayList; import java.util.List; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.JOptionPane; import nl.fontys.sofa.limo.api.service.provider.LegTypeService; import nl.fontys.sofa.limo.domain.component.Icon; import nl.fontys.sofa.limo.domain.component.type.LegType; import nl.fontys.sofa.limo.view.node.property.StupidProperty; import nl.fontys.sofa.limo.view.node.property.editor.EventPropertyEditor; import nl.fontys.sofa.limo.view.node.property.editor.ProcedurePropertyEditor; import nl.fontys.sofa.limo.view.util.LIMOResourceBundle; import nl.fontys.sofa.limo.view.wizard.types.leg.LegTypeWizardAction; import org.openide.ErrorManager; import org.openide.nodes.Sheet; import org.openide.util.Lookup; /** * View representation of the LegType class. * * @author Sebastiaan Heijmann */ public class LegTypeNode extends AbstractBeanNode<LegType> { /** * constructor for LegTypeNode, adds the bean to the instancecontent. * * @param bean * @throws IntrospectionException */ public LegTypeNode(LegType bean) throws IntrospectionException { super(bean, LegType.class); this.bean = bean; } @Override public Action[] getActions(boolean context) { ArrayList<Action> actionList = new ArrayList<>(); actionList.add(new AbstractAction(LIMOResourceBundle.getString("EDIT")) { @Override public void actionPerformed(ActionEvent e) { LegTypeWizardAction wiz = new LegTypeWizardAction(); wiz.isUpdate(bean); wiz.actionPerformed(e); createProperties(getBean(), null); setSheet(getSheet()); } }); actionList.add(new AbstractAction(LIMOResourceBundle.getString("DELETE")) { @Override public void actionPerformed(ActionEvent e) { int reply = JOptionPane.showConfirmDialog(null, LIMOResourceBundle.getString("DELETE_QUESTION", bean.getName()), LIMOResourceBundle.getString("ARE_YOU_SURE"), JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE); if (reply == JOptionPane.YES_OPTION) { LegTypeService service = Lookup.getDefault().lookup(LegTypeService.class); service.delete(bean); } } }); return actionList.toArray(new Action[actionList.size()]); } @Override protected void createProperties(LegType bean, BeanInfo info) { Sheet sets = getSheet(); Sheet.Set set = super.getBaseEntityPropertySheet(); try { StupidProperty eventProp = new StupidProperty(getBean(), List.class, "events"); eventProp.addPropertyChangeListener(getListener()); eventProp.setPropertyEditorClass(EventPropertyEditor.class); eventProp.setDisplayName(LIMOResourceBundle.getString("EVENTS")); eventProp.setShortDescription(LIMOResourceBundle.getString("EVENTS_OF", LIMOResourceBundle.getString("LEG_TYPE"))); eventProp.setValue("canEditAsText", false); StupidProperty procedureProp = new StupidProperty(getBean(), List.class, "procedures"); procedureProp.addPropertyChangeListener(getListener()); procedureProp.setPropertyEditorClass(ProcedurePropertyEditor.class); procedureProp.setDisplayName(LIMOResourceBundle.getString("PROCEDURES")); procedureProp.setShortDescription(LIMOResourceBundle.getString("PROCEDURES_OF", LIMOResourceBundle.getString("LEG_TYPE"))); procedureProp.setValue("canEditAsText", false); set.put(procedureProp); set.put(eventProp); } catch (NoSuchMethodException ex) { ErrorManager.getDefault(); } sets.put(set); } @Override public AbstractBeanNode getDetachedNodeCopy() { throw new UnsupportedOperationException(LIMOResourceBundle.getString("COPY_NOT_SUPPORTED")); } @Override Class getServiceClass() { return LegTypeService.class; } @Override protected Icon getBeanIcon() { return getBean().getIcon(); } @Override public void delete() { LegTypeService service = Lookup.getDefault().lookup(LegTypeService.class); service.delete(bean); } }