aboutsummaryrefslogtreecommitdiffstats
path: root/draw9patch/src
diff options
context:
space:
mode:
authorThe Android Open Source Project <initial-contribution@android.com>2009-03-09 11:52:11 -0700
committerThe Android Open Source Project <initial-contribution@android.com>2009-03-09 11:52:11 -0700
commit67dc23a61d888ba1b39fe6ed23d9f4d1a3df80ee (patch)
treea42bec75db95d97b137dae37faa2838867475437 /draw9patch/src
parent72a9d2164d9207c39fbcfa2db51b4aa4f927a9dd (diff)
downloadsdk-67dc23a61d888ba1b39fe6ed23d9f4d1a3df80ee.zip
sdk-67dc23a61d888ba1b39fe6ed23d9f4d1a3df80ee.tar.gz
sdk-67dc23a61d888ba1b39fe6ed23d9f4d1a3df80ee.tar.bz2
auto import from //branches/cupcake/...@137197
Diffstat (limited to 'draw9patch/src')
-rw-r--r--draw9patch/src/com/android/draw9patch/ui/ImageEditorPanel.java54
-rw-r--r--draw9patch/src/com/android/draw9patch/ui/ImageTransferHandler.java37
2 files changed, 80 insertions, 11 deletions
diff --git a/draw9patch/src/com/android/draw9patch/ui/ImageEditorPanel.java b/draw9patch/src/com/android/draw9patch/ui/ImageEditorPanel.java
index 6901c98..84b96a5 100644
--- a/draw9patch/src/com/android/draw9patch/ui/ImageEditorPanel.java
+++ b/draw9patch/src/com/android/draw9patch/ui/ImageEditorPanel.java
@@ -478,6 +478,14 @@ class ImageEditorPanel extends JPanel {
start = rect.x;
}
}
+ } else {
+ int start = -1;
+ for (Rectangle rect : patches) {
+ if (rect.x > start) {
+ horizontalPatchesSum += rect.width;
+ start = rect.x;
+ }
+ }
}
verticalPatchesSum = 0;
@@ -489,6 +497,14 @@ class ImageEditorPanel extends JPanel {
start = rect.y;
}
}
+ } else {
+ int start = -1;
+ for (Rectangle rect : patches) {
+ if (rect.y > start) {
+ verticalPatchesSum += rect.height;
+ start = rect.y;
+ }
+ }
}
setSize(size);
@@ -528,8 +544,7 @@ class ImageEditorPanel extends JPanel {
x = 0;
y = 0;
- if (patches.size() == 0 || horizontalPatches.size() == 0 ||
- verticalPatches.size() == 0) {
+ if (patches.size() == 0) {
g.drawImage(image, 0, 0, scaledWidth, scaledHeight, null);
g2.dispose();
return;
@@ -1028,7 +1043,15 @@ class ImageEditorPanel extends JPanel {
horizontalPatches = getRectangles(left.first, top.second);
verticalPatches = getRectangles(left.second, top.first);
} else {
- horizontalPatches = verticalPatches = new ArrayList<Rectangle>(0);
+ if (top.first.size() > 0) {
+ horizontalPatches = new ArrayList<Rectangle>(0);
+ verticalPatches = getVerticalRectangles(top.first);
+ } else if (left.first.size() > 0) {
+ horizontalPatches = getHorizontalRectangles(left.first);
+ verticalPatches = new ArrayList<Rectangle>(0);
+ } else {
+ horizontalPatches = verticalPatches = new ArrayList<Rectangle>(0);
+ }
}
row = GraphicsUtilities.getPixels(image, 0, height - 1, width, 1, row);
@@ -1041,6 +1064,28 @@ class ImageEditorPanel extends JPanel {
verticalPadding = getPadding(left.first);
}
+ private List<Rectangle> getVerticalRectangles(List<Pair<Integer>> topPairs) {
+ List<Rectangle> rectangles = new ArrayList<Rectangle>();
+ for (Pair<Integer> top : topPairs) {
+ int x = top.first;
+ int width = top.second - top.first;
+
+ rectangles.add(new Rectangle(x, 1, width, image.getHeight() - 2));
+ }
+ return rectangles;
+ }
+
+ private List<Rectangle> getHorizontalRectangles(List<Pair<Integer>> leftPairs) {
+ List<Rectangle> rectangles = new ArrayList<Rectangle>();
+ for (Pair<Integer> left : leftPairs) {
+ int y = left.first;
+ int height = left.second - left.first;
+
+ rectangles.add(new Rectangle(1, y, image.getWidth() - 2, height));
+ }
+ return rectangles;
+ }
+
private Pair<Integer> getPadding(List<Pair<Integer>> pairs) {
if (pairs.size() == 0) {
return new Pair<Integer>(0, 0);
@@ -1063,7 +1108,7 @@ class ImageEditorPanel extends JPanel {
for (Pair<Integer> left : leftPairs) {
int y = left.first;
int height = left.second - left.first;
- for (Pair<Integer> top: topPairs) {
+ for (Pair<Integer> top : topPairs) {
int x = top.first;
int width = top.second - top.first;
@@ -1108,6 +1153,7 @@ class ImageEditorPanel extends JPanel {
startWithPatch[0] = true;
fixed.clear();
}
+
return new Pair<List<Pair<Integer>>>(fixed, patches);
}
diff --git a/draw9patch/src/com/android/draw9patch/ui/ImageTransferHandler.java b/draw9patch/src/com/android/draw9patch/ui/ImageTransferHandler.java
index a62884f..f14cd77 100644
--- a/draw9patch/src/com/android/draw9patch/ui/ImageTransferHandler.java
+++ b/draw9patch/src/com/android/draw9patch/ui/ImageTransferHandler.java
@@ -36,25 +36,48 @@ class ImageTransferHandler extends TransferHandler {
@Override
public boolean importData(JComponent component, Transferable transferable) {
try {
- Object data = transferable.getTransferData(DataFlavor.javaFileListFlavor);
- //noinspection unchecked
- final File file = ((List<File>) data).get(0);
- mainFrame.open(file).execute();
+ for (DataFlavor flavor : transferable.getTransferDataFlavors()) {
+ if (flavor.isFlavorJavaFileListType()) {
+ Object data = transferable.getTransferData(DataFlavor.javaFileListFlavor);
+ //noinspection unchecked
+ final File file = ((List<File>) data).get(0);
+ mainFrame.open(file).execute();
+ return true;
+ } else if (flavor.isFlavorTextType()) {
+ if (flavor.getRepresentationClass() == String.class) {
+ String mime = flavor.getMimeType();
+ DataFlavor flave = new DataFlavor(mime);
+ Object data = transferable.getTransferData(flave);
+ final String path = convertPath(data.toString());
+ mainFrame.open(new File(path)).execute();
+ return true;
+ }
+ }
+ }
} catch (UnsupportedFlavorException e) {
- return false;
+ // Ignore
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
+ } catch (Exception e) {
+ e.printStackTrace();
}
- return true;
+ return false;
+ }
+
+ private static String convertPath(String path) {
+ if (path.startsWith("file://")) path = path.substring("file://".length());
+ if (path.indexOf('\n') != -1) path = path.substring(0, path.indexOf('\n'));
+ if (path.indexOf('\r') != -1) path = path.substring(0, path.indexOf('\r'));
+ return path;
}
@Override
public boolean canImport(JComponent component, DataFlavor[] dataFlavors) {
for (DataFlavor flavor : dataFlavors) {
- if (flavor.isFlavorJavaFileListType()) {
+ if (flavor.isFlavorJavaFileListType() || flavor.isFlavorTextType()) {
return true;
}
}