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 javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JOptionPane;
import nl.fontys.sofa.limo.api.service.provider.ProcedureCategoryService;
import nl.fontys.sofa.limo.domain.component.Icon;
import nl.fontys.sofa.limo.domain.component.procedure.ProcedureCategory;
import nl.fontys.sofa.limo.view.custom.panel.NameDescriptionDialogInputPanel;
import nl.fontys.sofa.limo.view.util.LIMOResourceBundle;
import org.openide.nodes.Sheet;
import org.openide.util.Lookup;
/**
* View representation of the CostCategory class.
*
* @author Sebastiaan Heijmann
*/
public class ProcedureCategoryNode extends AbstractBeanNode<ProcedureCategory> {
public ProcedureCategoryNode(ProcedureCategory bean) throws IntrospectionException {
super(bean, ProcedureCategory.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) {
editProcedure();
}
});
actionList.add(new AbstractAction(LIMOResourceBundle.getString("DELETE")) {
@Override
public void actionPerformed(ActionEvent e) {
deleteProcedure();
}
});
return actionList.toArray(new Action[actionList.size()]);
}
/**
* Open an procedure panel with the procedure for editing.
*/
private void editProcedure() {
NameDescriptionDialogInputPanel inputPane = new NameDescriptionDialogInputPanel();
inputPane.setBeanName(bean.getName());
inputPane.setBeanDescription(bean.getDescription());
int result = JOptionPane.showConfirmDialog(null, inputPane, LIMOResourceBundle.getString("ADD_PROCEDURE_CATEGORY"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE, null);
if (result == JOptionPane.OK_OPTION) {
bean.setName(inputPane.getNameFieldValue());
bean.setDescription(inputPane.getDescriptionFieldValue());
ProcedureCategoryService service = Lookup.getDefault().lookup(ProcedureCategoryService.class);
service.update(bean);
createProperties(getBean(), null);
setSheet(getSheet());
}
}
/**
* Delete the procedure from database.
*/
private void deleteProcedure() {
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) {
ProcedureCategoryService service = Lookup.getDefault().lookup(ProcedureCategoryService.class);
service.delete(bean);
}
}
@Override
protected void createProperties(ProcedureCategory bean, BeanInfo info) {
Sheet sets = getSheet();
Sheet.Set set = getNameDescriptionPropertySheet();
sets.put(set);
}
@Override
public AbstractBeanNode getDetachedNodeCopy() {
throw new UnsupportedOperationException(LIMOResourceBundle.getString("COPY_NOT_SUPPORTED"));
}
@Override
Class getServiceClass() {
return ProcedureCategoryService.class;
}
@Override
protected Icon getBeanIcon() {
throw new UnsupportedOperationException(LIMOResourceBundle.getString("NOT_SUPPORTED"));
}
@Override
public void delete() {
ProcedureCategoryService service = Lookup.getDefault().lookup(ProcedureCategoryService.class);
service.delete(bean);
}
}