Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
2e3b2fb0
D
dragonwell8_jdk
项目概览
openanolis
/
dragonwell8_jdk
通知
4
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_jdk
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
2e3b2fb0
编写于
2月 08, 2013
作者:
M
mcherkas
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8005932: Java 7 on mac os x only provides text clipboard formats
Reviewed-by: alexp, denis
上级
a5274ae5
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
539 addition
and
2 deletion
+539
-2
src/macosx/lib/flavormap.properties
src/macosx/lib/flavormap.properties
+4
-2
test/java/awt/DataFlavor/MissedHtmlAndRtfBug/AbsoluteComponentCenterCalculator.java
...issedHtmlAndRtfBug/AbsoluteComponentCenterCalculator.java
+37
-0
test/java/awt/DataFlavor/MissedHtmlAndRtfBug/DataFlavorSearcher.java
...wt/DataFlavor/MissedHtmlAndRtfBug/DataFlavorSearcher.java
+47
-0
test/java/awt/DataFlavor/MissedHtmlAndRtfBug/InterprocessMessages.java
.../DataFlavor/MissedHtmlAndRtfBug/InterprocessMessages.java
+28
-0
test/java/awt/DataFlavor/MissedHtmlAndRtfBug/MissedHtmlAndRtfBug.html
...t/DataFlavor/MissedHtmlAndRtfBug/MissedHtmlAndRtfBug.html
+27
-0
test/java/awt/DataFlavor/MissedHtmlAndRtfBug/MissedHtmlAndRtfBug.java
...t/DataFlavor/MissedHtmlAndRtfBug/MissedHtmlAndRtfBug.java
+205
-0
test/java/awt/DataFlavor/MissedHtmlAndRtfBug/MyTransferable.java
...va/awt/DataFlavor/MissedHtmlAndRtfBug/MyTransferable.java
+62
-0
test/java/awt/DataFlavor/MissedHtmlAndRtfBug/NextFramePositionCalculator.java
...avor/MissedHtmlAndRtfBug/NextFramePositionCalculator.java
+20
-0
test/java/awt/DataFlavor/MissedHtmlAndRtfBug/SourcePanel.java
.../java/awt/DataFlavor/MissedHtmlAndRtfBug/SourcePanel.java
+26
-0
test/java/awt/DataFlavor/MissedHtmlAndRtfBug/TargetPanel.java
.../java/awt/DataFlavor/MissedHtmlAndRtfBug/TargetPanel.java
+83
-0
未找到文件。
src/macosx/lib/flavormap.properties
浏览文件 @
2e3b2fb0
#
# This properties file is used to initialize the default
# java.awt.datatransfer.SystemFlavorMap. It contains the
X11
platform-specific,
# default mappings between common
X11
selection atoms and platform-independent
# java.awt.datatransfer.SystemFlavorMap. It contains the
Mac OS X
platform-specific,
# default mappings between common
Mac OS X
selection atoms and platform-independent
# MIME type strings, which will be converted into
# java.awt.datatransfer.DataFlavors.
#
...
...
@@ -76,3 +76,5 @@ FILE_NAME=application/x-java-file-list;class=java.util.List
text/uri-list=application/x-java-file-list;class=java.util.List
PNG=image/x-java-image;class=java.awt.Image
JFIF=image/x-java-image;class=java.awt.Image
RICH_TEXT=text/rtf
HTML=text/html;charset=utf-8;eoln="
\r\n
";terminators=1
test/java/awt/DataFlavor/MissedHtmlAndRtfBug/AbsoluteComponentCenterCalculator.java
0 → 100644
浏览文件 @
2e3b2fb0
/*
* Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
import
java.awt.*
;
class
AbsoluteComponentCenterCalculator
{
private
AbsoluteComponentCenterCalculator
()
{
}
public
static
int
calculateXCenterCoordinate
(
Component
component
)
{
return
(
int
)
component
.
getLocationOnScreen
().
getX
()
+
(
component
.
getWidth
()
/
2
);
}
public
static
int
calculateYCenterCoordinate
(
Component
component
)
{
return
(
int
)
component
.
getLocationOnScreen
().
getY
()
+
(
component
.
getHeight
()
/
2
);
}
}
test/java/awt/DataFlavor/MissedHtmlAndRtfBug/DataFlavorSearcher.java
0 → 100644
浏览文件 @
2e3b2fb0
/*
* Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
import
java.awt.datatransfer.DataFlavor
;
import
java.awt.datatransfer.FlavorTable
;
import
java.awt.datatransfer.SystemFlavorMap
;
import
java.util.Arrays
;
public
class
DataFlavorSearcher
{
static
public
String
[]
HTML_NAMES
=
new
String
[]{
"HTML"
,
"HTML Format"
};
static
public
String
[]
RICH_TEXT_NAMES
=
new
String
[]{
"RICH_TEXT"
,
"Rich Text Format"
};
static
public
DataFlavor
getByteDataFlavorForNative
(
String
[]
nats
)
{
FlavorTable
flavorTable
=
(
FlavorTable
)
SystemFlavorMap
.
getDefaultFlavorMap
();
for
(
String
nat
:
nats
)
{
java
.
util
.
List
<
DataFlavor
>
flavors
=
flavorTable
.
getFlavorsForNative
(
nat
);
for
(
DataFlavor
flavor
:
flavors
)
{
if
(
flavor
!=
null
&&
flavor
.
getRepresentationClass
().
equals
(
byte
[].
class
))
{
return
flavor
;
}
}
}
throw
new
RuntimeException
(
"No data flavor was found for natives: "
+
Arrays
.
toString
(
nats
));
}
}
test/java/awt/DataFlavor/MissedHtmlAndRtfBug/InterprocessMessages.java
0 → 100644
浏览文件 @
2e3b2fb0
/*
* Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
interface
InterprocessMessages
{
final
static
int
EXECUTION_IS_SUCCESSFULL
=
0
;
final
static
int
DATA_IS_CORRUPTED
=
212
;
}
test/java/awt/DataFlavor/MissedHtmlAndRtfBug/MissedHtmlAndRtfBug.html
0 → 100644
浏览文件 @
2e3b2fb0
<html>
<!--
@test
@bug 8005932
@summary Java 7 on mac os x only provides text clipboard formats
@author mikhail.cherkasov@oracle.com
@library ../../regtesthelpers
@library ../../regtesthelpers/process
@build Util
@build ProcessResults ProcessCommunicator
@run applet/othervm MissedHtmlAndRtfBug.html
*/>
<head>
<title>Java 7 on mac os x only provides text clipboard formats</title>
</head>
<body>
<h1> MissedHtmlAndRtfBug <br>Bug ID: 8005932 </h1>
<p> This is an AUTOMATIC test, simply wait for completion </p>
<APPLET CODE="MissedHtmlAndRtfBug.class" WIDTH=200 HEIGHT=200></APPLET>
</body>
</html>
test/java/awt/DataFlavor/MissedHtmlAndRtfBug/MissedHtmlAndRtfBug.java
0 → 100644
浏览文件 @
2e3b2fb0
/*
* Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
@test
@bug 8005932
@summary Java 7 on mac os x only provides text clipboard formats
@author mikhail.cherkasov@oracle.com
@library ../../regtesthelpers
@library ../../regtesthelpers/process
@build Util
@build ProcessResults ProcessCommunicator
@run applet/othervm MissedHtmlAndRtfBug.html
*/
import
java.awt.*
;
import
java.awt.datatransfer.DataFlavor
;
import
java.awt.event.*
;
import
java.applet.Applet
;
import
java.io.File
;
import
java.util.ArrayList
;
import
test.java.awt.regtesthelpers.process.ProcessCommunicator
;
import
test.java.awt.regtesthelpers.process.ProcessResults
;
import
test.java.awt.regtesthelpers.Util
;
import
sun.awt.OSInfo
;
import
static
java
.
lang
.
Thread
.
sleep
;
public
class
MissedHtmlAndRtfBug
extends
Applet
{
public
void
init
()
{
setLayout
(
new
BorderLayout
());
}
//End init()
public
void
start
()
{
if
(
OSInfo
.
getOSType
()
!=
OSInfo
.
OSType
.
MACOSX
&&
OSInfo
.
getOSType
()
!=
OSInfo
.
OSType
.
WINDOWS
)
{
System
.
out
.
println
(
"This test is for Windows and Mac only. Passed."
);
return
;
}
final
Frame
sourceFrame
=
new
Frame
(
"Source frame"
);
final
SourcePanel
sourcePanel
=
new
SourcePanel
();
sourceFrame
.
add
(
sourcePanel
);
sourceFrame
.
pack
();
sourceFrame
.
addWindowListener
(
new
WindowAdapter
()
{
@Override
public
void
windowClosing
(
WindowEvent
e
)
{
sourceFrame
.
dispose
();
}
});
sourceFrame
.
setVisible
(
true
);
Util
.
waitForIdle
(
null
);
NextFramePositionCalculator
positionCalculator
=
new
NextFramePositionCalculator
(
sourceFrame
);
ArrayList
<
String
>
args
=
new
ArrayList
<
String
>(
5
);
args
.
add
(
String
.
valueOf
(
positionCalculator
.
getNextLocationX
()));
args
.
add
(
String
.
valueOf
(
positionCalculator
.
getNextLocationY
()));
args
.
add
(
String
.
valueOf
(
AbsoluteComponentCenterCalculator
.
calculateXCenterCoordinate
(
sourcePanel
)));
args
.
add
(
String
.
valueOf
(
AbsoluteComponentCenterCalculator
.
calculateYCenterCoordinate
(
sourcePanel
)));
args
.
add
(
concatStrings
(
DataFlavorSearcher
.
RICH_TEXT_NAMES
));
ProcessResults
processResults
=
// ProcessCommunicator.executeChildProcess(this.getClass(), "/Users/mcherkasov/ws/clipboard/DataFlover/out/production/DataFlover" +
// " -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005 ",
// args.toArray(new String[0]));
ProcessCommunicator
.
executeChildProcess
(
this
.
getClass
(),
"."
+
File
.
separator
+
System
.
getProperty
(
"java.class.path"
),
args
.
toArray
(
new
String
[]{}));
verifyTestResults
(
processResults
);
args
.
set
(
args
.
size
()
-
1
,
concatStrings
(
DataFlavorSearcher
.
HTML_NAMES
));
ProcessCommunicator
.
executeChildProcess
(
this
.
getClass
(),
"."
+
File
.
separator
+
System
.
getProperty
(
"java.class.path"
),
args
.
toArray
(
new
String
[]{}));
verifyTestResults
(
processResults
);
}
// start()
private
String
concatStrings
(
String
[]
strings
)
{
StringBuffer
result
=
new
StringBuffer
(
"\""
);
for
(
int
i
=
0
;
i
<
strings
.
length
;
i
++)
{
result
.
append
(
strings
[
i
]);
result
.
append
(
","
);
}
result
.
append
(
"\""
);
return
result
.
toString
();
}
private
static
void
verifyTestResults
(
ProcessResults
processResults
)
{
if
(
InterprocessMessages
.
DATA_IS_CORRUPTED
==
processResults
.
getExitValue
())
{
processResults
.
printProcessErrorOutput
(
System
.
err
);
throw
new
RuntimeException
(
"TEST IS FAILED: Target has received"
+
" corrupted data."
);
}
processResults
.
verifyStdErr
(
System
.
err
);
processResults
.
verifyProcessExitValue
(
System
.
err
);
processResults
.
printProcessStandartOutput
(
System
.
out
);
}
//We cannot make an instance of the applet without the default constructor
public
MissedHtmlAndRtfBug
()
{
super
();
}
//We need in this constructor to pass frame position between JVMs
public
MissedHtmlAndRtfBug
(
Point
targetFrameLocation
,
Point
dragSourcePoint
,
DataFlavor
df
)
throws
InterruptedException
{
final
Frame
targetFrame
=
new
Frame
(
"Target frame"
);
final
TargetPanel
targetPanel
=
new
TargetPanel
(
targetFrame
,
df
);
targetFrame
.
add
(
targetPanel
);
targetFrame
.
addWindowListener
(
new
WindowAdapter
()
{
@Override
public
void
windowClosing
(
WindowEvent
e
)
{
targetFrame
.
dispose
();
}
});
targetFrame
.
setLocation
(
targetFrameLocation
);
targetFrame
.
pack
();
targetFrame
.
setVisible
(
true
);
doTest
(
dragSourcePoint
,
targetPanel
);
}
private
void
doTest
(
Point
dragSourcePoint
,
TargetPanel
targetPanel
)
{
Util
.
waitForIdle
(
null
);
final
Robot
robot
=
Util
.
createRobot
();
robot
.
mouseMove
((
int
)
dragSourcePoint
.
getX
(),
(
int
)
dragSourcePoint
.
getY
());
try
{
sleep
(
100
);
robot
.
mousePress
(
InputEvent
.
BUTTON1_MASK
);
sleep
(
100
);
robot
.
mouseRelease
(
InputEvent
.
BUTTON1_MASK
);
sleep
(
100
);
}
catch
(
InterruptedException
e
)
{
e
.
printStackTrace
();
}
Util
.
drag
(
robot
,
dragSourcePoint
,
new
Point
(
AbsoluteComponentCenterCalculator
.
calculateXCenterCoordinate
(
targetPanel
),
AbsoluteComponentCenterCalculator
.
calculateYCenterCoordinate
(
targetPanel
)),
InputEvent
.
BUTTON1_MASK
);
}
enum
InterprocessArguments
{
TARGET_FRAME_X_POSITION_ARGUMENT
,
TARGET_FRAME_Y_POSITION_ARGUMENT
,
DRAG_SOURCE_POINT_X_ARGUMENT
,
DRAG_SOURCE_POINT_Y_ARGUMENT
,
DATA_FLAVOR_NAMES
;
int
extractInt
(
String
[]
args
)
{
return
Integer
.
parseInt
(
args
[
this
.
ordinal
()]);
}
String
[]
extractStringArray
(
String
[]
args
)
{
return
args
[
this
.
ordinal
()].
replaceAll
(
"\""
,
""
).
split
(
","
);
}
}
public
static
void
main
(
String
[]
args
)
{
Point
dragSourcePoint
=
new
Point
(
InterprocessArguments
.
DRAG_SOURCE_POINT_X_ARGUMENT
.
extractInt
(
args
),
InterprocessArguments
.
DRAG_SOURCE_POINT_Y_ARGUMENT
.
extractInt
(
args
));
Point
targetFrameLocation
=
new
Point
(
InterprocessArguments
.
TARGET_FRAME_X_POSITION_ARGUMENT
.
extractInt
(
args
),
InterprocessArguments
.
TARGET_FRAME_Y_POSITION_ARGUMENT
.
extractInt
(
args
));
String
[]
names
=
InterprocessArguments
.
DATA_FLAVOR_NAMES
.
extractStringArray
(
args
);
DataFlavor
df
=
DataFlavorSearcher
.
getByteDataFlavorForNative
(
names
);
try
{
new
MissedHtmlAndRtfBug
(
targetFrameLocation
,
dragSourcePoint
,
df
);
}
catch
(
InterruptedException
e
)
{
e
.
printStackTrace
();
}
}
}
test/java/awt/DataFlavor/MissedHtmlAndRtfBug/MyTransferable.java
0 → 100644
浏览文件 @
2e3b2fb0
/*
* Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
import
java.awt.datatransfer.*
;
import
java.io.IOException
;
class
MyTransferable
implements
Transferable
{
public
static
final
String
TEST_DATA
=
"<b>Test</b>"
;
private
DataFlavor
[]
dataFlavors
;
public
MyTransferable
()
{
dataFlavors
=
new
DataFlavor
[]{
DataFlavorSearcher
.
getByteDataFlavorForNative
(
DataFlavorSearcher
.
HTML_NAMES
),
DataFlavorSearcher
.
getByteDataFlavorForNative
(
DataFlavorSearcher
.
RICH_TEXT_NAMES
)};
}
@Override
public
DataFlavor
[]
getTransferDataFlavors
()
{
return
dataFlavors
;
}
@Override
public
boolean
isDataFlavorSupported
(
DataFlavor
flavor
)
{
for
(
DataFlavor
f
:
dataFlavors
)
{
if
(
f
.
equals
(
flavor
))
{
return
true
;
}
}
return
false
;
}
@Override
public
Object
getTransferData
(
DataFlavor
flavor
)
throws
UnsupportedFlavorException
,
IOException
{
if
(
isDataFlavorSupported
(
flavor
))
{
return
TEST_DATA
.
getBytes
(
"UTF-16"
);
}
else
{
throw
new
UnsupportedFlavorException
(
flavor
);
}
}
}
\ No newline at end of file
test/java/awt/DataFlavor/MissedHtmlAndRtfBug/NextFramePositionCalculator.java
0 → 100644
浏览文件 @
2e3b2fb0
import
java.awt.*
;
class
NextFramePositionCalculator
{
private
final
Frame
currentFrame
;
public
NextFramePositionCalculator
(
Frame
currentFrame
)
{
this
.
currentFrame
=
currentFrame
;
}
public
int
getNextLocationX
()
{
return
currentFrame
.
getX
()
+
currentFrame
.
getWidth
();
}
public
int
getNextLocationY
()
{
return
currentFrame
.
getY
();
}
}
test/java/awt/DataFlavor/MissedHtmlAndRtfBug/SourcePanel.java
0 → 100644
浏览文件 @
2e3b2fb0
import
java.awt.dnd.DragSource
;
import
java.awt.dnd.DnDConstants
;
import
java.awt.dnd.DragGestureEvent
;
import
java.awt.dnd.DragGestureListener
;
import
java.awt.*
;
public
class
SourcePanel
extends
Panel
{
private
final
MyDragGestureListener
dragGestureListener
=
new
MyDragGestureListener
();
public
SourcePanel
()
{
setPreferredSize
(
new
Dimension
(
200
,
200
));
DragSource
defaultDragSource
=
DragSource
.
getDefaultDragSource
();
defaultDragSource
.
createDefaultDragGestureRecognizer
(
this
,
DnDConstants
.
ACTION_COPY_OR_MOVE
,
dragGestureListener
);
setBackground
(
Color
.
RED
);
}
private
class
MyDragGestureListener
implements
DragGestureListener
{
public
void
dragGestureRecognized
(
DragGestureEvent
dge
)
{
dge
.
startDrag
(
null
,
new
MyTransferable
());
}
}
}
test/java/awt/DataFlavor/MissedHtmlAndRtfBug/TargetPanel.java
0 → 100644
浏览文件 @
2e3b2fb0
import
java.awt.datatransfer.Transferable
;
import
java.awt.dnd.*
;
import
java.awt.*
;
import
java.awt.datatransfer.DataFlavor
;
import
java.awt.datatransfer.UnsupportedFlavorException
;
import
java.io.IOException
;
import
java.util.Timer
;
import
java.util.TimerTask
;
public
class
TargetPanel
extends
Panel
implements
DropTargetListener
{
//private final CustomDropTargetListener dropTargetListener = new CustomDropTargetListener();
private
Frame
frame
;
DataFlavor
dataFlavor
;
public
TargetPanel
(
Frame
frame
,
DataFlavor
dataFlavor
)
{
this
.
dataFlavor
=
dataFlavor
;
this
.
frame
=
frame
;
setBackground
(
Color
.
DARK_GRAY
);
setPreferredSize
(
new
Dimension
(
200
,
200
));
setDropTarget
(
new
DropTarget
(
this
,
this
));
}
public
void
dragEnter
(
DropTargetDragEvent
dtde
)
{
if
(
dtde
.
isDataFlavorSupported
(
dataFlavor
))
{
dtde
.
acceptDrag
(
DnDConstants
.
ACTION_COPY_OR_MOVE
);
}
}
public
void
dragOver
(
DropTargetDragEvent
dtde
)
{
if
(
dtde
.
isDataFlavorSupported
(
dataFlavor
))
{
dtde
.
acceptDrag
(
DnDConstants
.
ACTION_COPY_OR_MOVE
);
}
}
public
void
dropActionChanged
(
DropTargetDragEvent
dtde
)
{
if
(
dtde
.
isDataFlavorSupported
(
dataFlavor
))
{
dtde
.
acceptDrag
(
DnDConstants
.
ACTION_COPY_OR_MOVE
);
}
}
public
void
dragExit
(
DropTargetEvent
dte
)
{
}
public
void
drop
(
DropTargetDropEvent
dtde
)
{
dtde
.
acceptDrop
(
DnDConstants
.
ACTION_COPY_OR_MOVE
);
if
(
dtde
.
isDataFlavorSupported
(
dataFlavor
))
{
String
result
=
null
;
try
{
Transferable
t
=
dtde
.
getTransferable
();
byte
[]
data
=
(
byte
[])
dtde
.
getTransferable
().
getTransferData
(
dataFlavor
);
result
=
new
String
(
data
,
"UTF-16"
);
repaint
();
}
catch
(
UnsupportedFlavorException
e
)
{
e
.
printStackTrace
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
dtde
.
dropComplete
(
true
);
if
(
result
!=
null
&&
result
.
contains
(
MyTransferable
.
TEST_DATA
))
{
System
.
err
.
println
(
InterprocessMessages
.
EXECUTION_IS_SUCCESSFULL
);
Timer
t
=
new
Timer
();
t
.
schedule
(
new
TimerTask
()
{
@Override
public
void
run
()
{
System
.
exit
(
0
);
}
},
2000
);
return
;
}
}
dtde
.
rejectDrop
();
System
.
err
.
println
(
InterprocessMessages
.
DATA_IS_CORRUPTED
);
System
.
exit
(
InterprocessMessages
.
DATA_IS_CORRUPTED
);
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录