package com.baselet.gui.command;
import java.util.Vector;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.baselet.control.constants.Constants;
import com.baselet.control.util.Utils;
import com.baselet.diagram.DiagramHandler;
public class HelpPanelChanged extends Command {
private final String changed_to;
private String changed_from;
public HelpPanelChanged(String text) {
changed_to = text;
}
private HelpPanelChanged(String changed_from, String changed_to) {
this.changed_from = changed_from;
this.changed_to = changed_to;
}
public static Double getFontsize(String text) {
if (text == null) {
return null;
}
Pattern p = Pattern.compile("fontsize=" + Constants.REGEX_FLOAT + "( .*)?");
Vector<String> txt = Utils.decomposeStrings(text);
for (String t : txt) {
Matcher m = p.matcher(t);
if (m.matches()) {
return Double.parseDouble(m.group(1));
}
}
return null;
}
public static String getFontfamily(String text) {
if (text == null) {
return null;
}
Pattern p = Pattern.compile("fontfamily\\=(\\w+).*");
Vector<String> txt = Utils.decomposeStrings(text);
for (String t : txt) {
Matcher m = p.matcher(t);
if (m.matches()) {
return m.group(1);
}
}
return null;
}
@Override
public void execute(DiagramHandler handler) {
super.execute(handler);
changed_from = handler.getHelpText();
handler.setHelpText(changed_to);
handler.getFontHandler().setDiagramDefaultFontSize(getFontsize(changed_to));
handler.getFontHandler().setDiagramDefaultFontFamily(getFontfamily(changed_to));
handler.getDrawPanel().updateElements();
handler.getDrawPanel().repaint();
}
@Override
public void undo(DiagramHandler handler) {
super.undo(handler);
handler.setHelpText(changed_from);
handler.getFontHandler().setDiagramDefaultFontSize(getFontsize(changed_from));
handler.getFontHandler().setDiagramDefaultFontFamily(getFontfamily(changed_from));
handler.getDrawPanel().updateElements();
handler.getDrawPanel().repaint();
}
@Override
public boolean isMergeableTo(Command c) {
if (c instanceof HelpPanelChanged) {
return true;
}
return false;
}
@Override
public Command mergeTo(Command c) {
HelpPanelChanged tmp = (HelpPanelChanged) c;
HelpPanelChanged ret = new HelpPanelChanged(tmp.changed_from, changed_to);
return ret;
}
}