package com.kreative.paint.tool.ui;
import java.awt.GridLayout;
import javax.swing.JPanel;
import com.kreative.paint.ToolContext;
import com.kreative.paint.ToolContextConstants;
import com.kreative.paint.ToolContextListener;
import com.kreative.paint.document.draw.ShadowSettings;
import com.kreative.paint.form.Form;
import com.kreative.paint.form.FormUI;
import com.kreative.paint.form.IntegerEnumOption;
import com.kreative.paint.form.IntegerOption;
import com.kreative.paint.tool.Tool;
import com.kreative.paint.tool.ToolUtilities;
public class QuickShadowUI extends JPanel implements ToolContextListener {
private static final long serialVersionUID = 1L;
private ToolContext tc;
private FormUI fui;
public QuickShadowUI(ToolContext tc, boolean mini) {
this.tc = tc;
Form f = new Form();
f.add(new IntegerEnumOption() {
public String getName() {
return ToolUtilities.messages.getString("options.ShadowType");
}
public int getValue() {
return QuickShadowUI.this.tc.getShadowType();
}
public void setValue(int v) {
QuickShadowUI.this.tc.setShadowType(v);
}
public int[] values() {
return new int[]{
ShadowSettings.SHADOW_TYPE_NONE,
ShadowSettings.SHADOW_TYPE_STROKE,
ShadowSettings.SHADOW_TYPE_FILL,
ShadowSettings.SHADOW_TYPE_BLACK,
ShadowSettings.SHADOW_TYPE_GRAY,
ShadowSettings.SHADOW_TYPE_WHITE
};
}
public String getLabel(int v) {
switch (v) {
case ShadowSettings.SHADOW_TYPE_NONE: return ToolUtilities.messages.getString("options.ShadowType.NONE");
case ShadowSettings.SHADOW_TYPE_STROKE: return ToolUtilities.messages.getString("options.ShadowType.STROKE");
case ShadowSettings.SHADOW_TYPE_FILL: return ToolUtilities.messages.getString("options.ShadowType.FILL");
case ShadowSettings.SHADOW_TYPE_BLACK: return ToolUtilities.messages.getString("options.ShadowType.BLACK");
case ShadowSettings.SHADOW_TYPE_GRAY: return ToolUtilities.messages.getString("options.ShadowType.GRAY");
case ShadowSettings.SHADOW_TYPE_WHITE: return ToolUtilities.messages.getString("options.ShadowType.WHITE");
default: return null;
}
}
});
f.add(new IntegerOption() {
public String getName() {
return ToolUtilities.messages.getString("options.ShadowOpacity");
}
public int getMaximum() {
return 255;
}
public int getMinimum() {
return 0;
}
public int getStep() {
return 1;
}
public int getValue() {
return QuickShadowUI.this.tc.getShadowOpacity();
}
public void setValue(int v) {
QuickShadowUI.this.tc.setShadowOpacity(v);
}
public boolean useSlider() {
return true;
}
});
f.add(new IntegerOption() {
public String getName() {
return ToolUtilities.messages.getString("options.ShadowXOffset");
}
public int getMaximum() {
return Integer.MAX_VALUE;
}
public int getMinimum() {
return 0;
}
public int getStep() {
return 1;
}
public int getValue() {
return QuickShadowUI.this.tc.getShadowXOffset();
}
public void setValue(int v) {
QuickShadowUI.this.tc.setShadowXOffset(v);
}
public boolean useSlider() {
return false;
}
});
f.add(new IntegerOption() {
public String getName() {
return ToolUtilities.messages.getString("options.ShadowYOffset");
}
public int getMaximum() {
return Integer.MAX_VALUE;
}
public int getMinimum() {
return 0;
}
public int getStep() {
return 1;
}
public int getValue() {
return QuickShadowUI.this.tc.getShadowYOffset();
}
public void setValue(int v) {
QuickShadowUI.this.tc.setShadowYOffset(v);
}
public boolean useSlider() {
return false;
}
});
setLayout(new GridLayout(1,1));
add(fui = new FormUI(f, mini));
tc.addToolContextListener(this);
}
public void modeChanged(ToolContext src, boolean drawMode) {}
public void toolChanged(ToolContext src, Tool previousTool, Tool nextTool) {}
public void toolDoubleClicked(ToolContext src, Tool tool) {}
public void toolSettingsChanged(ToolContext src, long delta) {
if ((delta & ToolContextConstants.CHANGED_QUICKSHADOW) != 0L) {
fui.update();
}
}
}