/*
* Copyright © 2009-2011 Rebecca G. Bettencourt / Kreative Software
* <p>
* The contents of this file are subject to the Mozilla Public License
* Version 1.1 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* <a href="http://www.mozilla.org/MPL/">http://www.mozilla.org/MPL/</a>
* <p>
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
* License for the specific language governing rights and limitations
* under the License.
* <p>
* Alternatively, the contents of this file may be used under the terms
* of the GNU Lesser General Public License (the "LGPL License"), in which
* case the provisions of LGPL License are applicable instead of those
* above. If you wish to allow use of your version of this file only
* under the terms of the LGPL License and not to allow others to use
* your version of this file under the MPL, indicate your decision by
* deleting the provisions above and replace them with the notice and
* other provisions required by the LGPL License. If you do not delete
* the provisions above, a recipient may use your version of this file
* under either the MPL or the LGPL License.
* @since PowerPaint 1.0
* @author Rebecca G. Bettencourt, Kreative Software
*/
package com.kreative.paint.tool;
import java.awt.*;
import java.io.*;
import java.net.*;
import com.kreative.paint.Layer;
public abstract class AbstractTool implements Tool {
public String getName() {
try {
return ToolUtilities.messages.getString(this.getClass().getSimpleName());
} catch (Exception e) {
return this.getClass().getSimpleName();
}
}
public Image getIcon() {
try {
String useBWOnly = System.getProperty("com.kreative.paint.tools.bwicons");
if (useBWOnly != null && useBWOnly.length() > 0) return getBWIcon();
} catch (Exception e) {}
try {
Class<?> tc = this.getClass();
URL u = tc.getResource(tc.getSimpleName()+".png");
URLConnection uc = u.openConnection();
InputStream ui = uc.getInputStream();
ByteArrayOutputStream bs = new ByteArrayOutputStream();
byte[] buff = new byte[16384];
int blen;
while ((blen = ui.read(buff)) >= 0) {
bs.write(buff, 0, blen);
}
ui.close();
bs.close();
byte[] b = bs.toByteArray();
Toolkit tk = Toolkit.getDefaultToolkit();
Image i = tk.createImage(b);
tk.prepareImage(i, -1, -1, null);
return i;
} catch (Exception e) {
return getBWIcon();
}
}
protected abstract Image getBWIcon();
public int getMouseHeldInterval() { return 0; }
public boolean shiftConstrainsCoordinates() { return false; }
public boolean usesLetterKeys() { return false; }
public boolean paintIntermediateUsesCanvasCoordinates() { return false; }
public boolean doubleClickForOptions() { return false; }
public boolean pushPaintSelectionUponEntry() { return true; }
public boolean clearDrawSelectionUponEntry() { return true; }
public boolean toolSelected(ToolEvent e) { return false; }
public boolean toolDoubleClicked(ToolEvent e) { return false; }
public boolean toolDeselected(ToolEvent e) { return false; }
public boolean toolSettingsChanged(ToolEvent e) { return false; }
public boolean paintSettingsChanged(ToolEvent e) { return false; }
public boolean mouseEntered(ToolEvent e) { return false; }
public boolean mouseMoved(ToolEvent e) { return false; }
public boolean mousePressed(ToolEvent e) { return false; }
public boolean mouseHeld(ToolEvent e) { return false; }
public boolean mouseClicked(ToolEvent e) { return false; }
public boolean mouseDragged(ToolEvent e) { return false; }
public boolean mouseReleased(ToolEvent e) { return false; }
public boolean mouseExited(ToolEvent e) { return false; }
public boolean keyPressed(ToolEvent e) { return false; }
public boolean keyTyped(ToolEvent e) { return false; }
public boolean keyReleased(ToolEvent e) { return false; }
public boolean respondsToCommand(ToolEvent e) { return false; }
public boolean enableCommand(ToolEvent e) { return false; }
public final boolean canDoCommand(ToolEvent e) { return false; }
public boolean doCommand(ToolEvent e) { return false; }
public boolean paintIntermediate(ToolEvent e, Graphics2D g) { return false; }
public boolean showPaintSelection(ToolEvent e) { return e.isInPaintMode(); }
public boolean showDrawSelection(ToolEvent e, Layer l) { return false; }
}