package org.sinnlabs.dbvim.rules; import java.sql.SQLException; import org.sinnlabs.dbvim.model.Form; import org.sinnlabs.dbvim.rules.Default.DefaultRules; import org.sinnlabs.dbvim.rules.engine.IRulable; import org.sinnlabs.dbvim.rules.engine.RulesResult; import org.sinnlabs.dbvim.rules.engine.exceptions.RulesException; import org.sinnlabs.dbvim.ui.IField; import org.sinnlabs.dbvim.ui.SelectFieldDialog; import org.sinnlabs.dbvim.ui.SelectJoinFieldDialog; import org.sinnlabs.dbvim.zk.model.IDeveloperStudio; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.Events; public class BaseFieldRules implements IRulable { protected int fType; protected BaseFieldRules(int fType) { this.fType = fType; } @Override public RulesResult applyPreCreationRules(IDeveloperStudio developer) throws RulesException { // TODO Auto-generated method stub return null; } @Override public RulesResult applyCreationRules(Component cmp, IDeveloperStudio dev) throws RulesException { final IField<?> field = (IField<?>) cmp; Form current = dev.getCurrentForm(); if (!current.isJoin()) { try { final SelectFieldDialog dialog = new SelectFieldDialog(current, fType); dialog.addEventListener(Events.ON_CLOSE, new EventListener<Event>() { @Override public void onEvent(Event arg0) throws Exception { if (dialog.getSelectedAction() == SelectFieldDialog.DD_OK) { field.setDBField(dialog.getSelectedField()); } else if(dialog.getSelectedAction() == SelectFieldDialog.DD_DISPLAYONLY) { field.setDisplayOnly(true); } else { throw new RulesException(new RulesResult( RulesResult.ERR_UNSPECIFIED, "no field selected.")); } } }); dev.getDesigner().appendChild(dialog); dialog.doModal(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } else { final SelectJoinFieldDialog dialog; try { dialog = new SelectJoinFieldDialog(current, cmp.getClass().getName()); dialog.addEventListener(Events.ON_CLOSE, new EventListener<Event>() { @Override public void onEvent(Event arg0) throws Exception { if (dialog.getSelectedAction() == SelectFieldDialog.DD_OK) { field.setForm(dialog.getSelectedField().formName); field.setMapping(dialog.getSelectedField().id); } else { throw new RulesException(new RulesResult( RulesResult.ERR_UNSPECIFIED, "no field selected.")); } } }); dev.getDesigner().appendChild(dialog); dialog.doModal(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return new RulesResult(RulesResult.SUCCESS, ""); } @Override public RulesResult applyModelToZUMLRules(Component cmp) throws RulesException { // TODO Auto-generated method stub return null; } @Override public RulesResult applyComponentDisplayRules(Component cmp) throws RulesException { // TODO Auto-generated method stub return null; } @Override public RulesResult applyCopyRules(Component source) throws RulesException { // TODO Auto-generated method stub return null; } @Override public RulesResult applyPrePasteRules(Component clone, Component target) throws RulesException { // TODO Auto-generated method stub return null; } @Override public String[] getModelToZUMLExcludedAttributes() { return new DefaultRules().getModelToZUMLExcludedAttributes(); } @Override public String[] getExcludedProperties() { return new DefaultRules().getExcludedProperties(); } @Override public boolean showChildren() { // TODO Auto-generated method stub return false; } @Override public boolean exportChildrenToZUML() { // TODO Auto-generated method stub return false; } /* (non-Javadoc) * @see org.sinnlabs.dbvim.rules.engine.IRulable#exportChildToZUML(org.zkoss.zk.ui.Component) */ @Override public boolean exportChildToZUML(Component child) { // TODO Auto-generated method stubs return false; } /* (non-Javadoc) * @see org.sinnlabs.dbvim.rules.engine.IRulable#getSpecialProperties() */ @Override public String[] getSpecialProperties() { // TODO Auto-generated method stub return null; } /* (non-Javadoc) * @see org.sinnlabs.dbvim.rules.engine.IRulable#getSpecialProperty(java.lang.String) */ @Override public Component getSpecialProperty(Component cmp, String name, IDeveloperStudio dev) { // TODO Auto-generated method stub return null; } }