diff options
author | The Android Open Source Project <initial-contribution@android.com> | 2009-03-09 11:52:11 -0700 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2009-03-09 11:52:11 -0700 |
commit | 67dc23a61d888ba1b39fe6ed23d9f4d1a3df80ee (patch) | |
tree | a42bec75db95d97b137dae37faa2838867475437 /draw9patch/src | |
parent | 72a9d2164d9207c39fbcfa2db51b4aa4f927a9dd (diff) | |
download | sdk-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.java | 54 | ||||
-rw-r--r-- | draw9patch/src/com/android/draw9patch/ui/ImageTransferHandler.java | 37 |
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; } } |