package ro.nextreports.designer.action;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.Action;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import ro.nextreports.designer.Globals;
import ro.nextreports.designer.NamePatternPanel;
import ro.nextreports.designer.ui.BaseDialog;
import ro.nextreports.designer.util.I18NSupport;
import ro.nextreports.designer.util.ImageUtil;
import ro.nextreports.designer.util.Show;
import ro.nextreports.designer.util.TreeUtil;
public class NamePatternAction extends AbstractAction {
public static final byte TABLE_NAME_PATTERN = 1;
public static final byte VIEW_NAME_PATTERN = 2;
public static final byte PROCEDURE_NAME_PATTERN = 4;
private byte type = TABLE_NAME_PATTERN;
private static final Log LOG = LogFactory.getLog(NamePatternAction.class);
public NamePatternAction(byte type) {
putValue(Action.NAME, I18NSupport.getString("pattern.action"));
putValue(Action.SMALL_ICON, ImageUtil.getImageIcon("pattern"));
putValue(Action.SHORT_DESCRIPTION, I18NSupport.getString("pattern.action"));
putValue(Action.LONG_DESCRIPTION, I18NSupport.getString("pattern.action"));
this.type = type;
}
public void actionPerformed(ActionEvent ev) {
NamePatternPanel panel = new NamePatternPanel(getPattern(type));
BaseDialog dialog = new BaseDialog(panel, getTitle(type));
Show.centrateComponent(Globals.getMainFrame(), dialog);
dialog.setVisible(true);
if (dialog.okPressed()) {
String pattern = panel.getPattern();
switch (type) {
case TABLE_NAME_PATTERN:
Globals.setTableNamePattern(pattern);
break;
case VIEW_NAME_PATTERN:
Globals.setViewNamePattern(pattern);
break;
case PROCEDURE_NAME_PATTERN:
Globals.setProcedureNamePattern(pattern);
break;
default:
break;
}
try {
TreeUtil.refreshDatabase();
} catch (Exception e) {
e.printStackTrace();
LOG.error(e.getMessage(), e);
}
}
}
private String getPattern(byte type) {
switch (type) {
case TABLE_NAME_PATTERN:
return Globals.getTableNamePattern();
case VIEW_NAME_PATTERN:
return Globals.getViewNamePattern();
case PROCEDURE_NAME_PATTERN:
return Globals.getProcedureNamePattern();
default:
return null;
}
}
private String getTitle(byte type) {
switch (type) {
case TABLE_NAME_PATTERN:
return I18NSupport.getString("pattern.table");
case VIEW_NAME_PATTERN:
return I18NSupport.getString("pattern.view");
case PROCEDURE_NAME_PATTERN:
return I18NSupport.getString("pattern.procedure");
default:
return "";
}
}
}