home *** CD-ROM | disk | FTP | other *** search
- package sun.awt.motif;
-
- import java.awt.datatransfer.DataFlavor;
- import java.awt.datatransfer.Transferable;
- import java.awt.datatransfer.UnsupportedFlavorException;
- import java.io.IOException;
- import java.io.StringBufferInputStream;
- import java.util.Vector;
- import sun.awt.Modality;
-
- public class X11Selection implements Transferable {
- static Vector selections;
- static Vector targetMap;
- int atom;
- X11SelectionHolder holder;
- Transferable contents;
- String dataString;
- int[] targetArray;
- Object data;
- Modality m_modality;
-
- static native void init();
-
- static native int getAtomForTarget(String var0);
-
- static native void registerTargetForFlavor(DataFlavor var0, String var1);
-
- static DataFlavor[] convertTargetsToFlavors(int[] var0) {
- Vector var1 = new Vector();
-
- for(int var2 = 0; var2 < var0.length; ++var2) {
- byte var3 = 0;
- if (var3 < targetMap.size()) {
- Target var4 = (Target)targetMap.elementAt(var3);
- if (var4.atom == var0[var2]) {
- for(int var5 = 0; var5 < var4.flavors.size(); ++var5) {
- DataFlavor var6 = (DataFlavor)var4.flavors.elementAt(var5);
- boolean var7 = false;
-
- for(int var8 = 0; var8 < var1.size(); ++var8) {
- if (var6.equals((DataFlavor)var1.elementAt(var8))) {
- var7 = true;
- break;
- }
- }
-
- if (!var7) {
- var1.addElement(var6);
- }
- }
- }
- }
- }
-
- DataFlavor[] var9 = new DataFlavor[var1.size()];
-
- for(int var10 = 0; var10 < var1.size(); ++var10) {
- var9[var10] = (DataFlavor)var1.elementAt(var10);
- }
-
- return var9;
- }
-
- static int[] convertFlavorToTargets(DataFlavor var0) {
- int[] var1 = new int[24];
- int var2 = 0;
-
- for(int var3 = 0; var3 < targetMap.size(); ++var3) {
- Target var4 = (Target)targetMap.elementAt(var3);
-
- for(int var5 = 0; var5 < var4.flavors.size(); ++var5) {
- DataFlavor var6 = (DataFlavor)var4.flavors.elementAt(var5);
- if (var6.equals(var0)) {
- var1[var2++] = var4.atom;
- break;
- }
- }
- }
-
- int[] var7 = new int[var2];
-
- for(int var8 = 0; var8 < var2; ++var8) {
- var7[var8] = var1[var8];
- }
-
- return var7;
- }
-
- public X11Selection(String var1) {
- this.create(var1);
- selections.addElement(this);
- }
-
- native void create(String var1);
-
- native void pDispose();
-
- native boolean pGetSelectionOwnership();
-
- boolean getSelectionOwnership(Transferable var1, X11SelectionHolder var2) {
- this.holder = var2;
- this.contents = var1;
- if (this.pGetSelectionOwnership()) {
- return true;
- } else {
- this.holder = null;
- this.contents = null;
- return false;
- }
- }
-
- void lostSelectionOwnership() {
- this.holder.lostSelectionOwnership();
- this.holder = null;
- this.contents = null;
- }
-
- public String getStringDataFromOwner(DataFlavor var1) {
- if (this.contents != null) {
- Class var2 = var1.getRepresentationClass();
-
- try {
- if (var2 == Class.forName("java.lang.String")) {
- this.dataString = (String)this.contents.getTransferData(var1);
- return this.dataString;
- }
- } catch (ClassNotFoundException var3) {
- } catch (Exception var4) {
- }
- }
-
- return null;
- }
-
- void enterModal() {
- try {
- this.m_modality = new Modality();
- this.m_modality.enter();
- } catch (InterruptedException var2) {
- } catch (ThreadDeath var3) {
- throw (ThreadDeath)((Throwable)var3).fillInStackTrace();
- }
- }
-
- void exitModal() {
- if (this.m_modality != null) {
- this.m_modality.exit();
- }
-
- }
-
- native void pGetTransferTargets();
-
- native void pGetTransferData(int[] var1);
-
- public DataFlavor[] getTransferDataFlavors() {
- this.targetArray = null;
- SelectionThread var1 = new SelectionThread(this, (int[])null);
- synchronized(var1){}
-
- try {
- try {
- ((Thread)var1).start();
- var1.wait();
- } catch (InterruptedException var5) {
- }
- } catch (Throwable var6) {
- throw var6;
- }
-
- return this.targetArray != null && this.targetArray.length != 0 ? convertTargetsToFlavors(this.targetArray) : null;
- }
-
- public boolean isDataFlavorSupported(DataFlavor var1) {
- DataFlavor[] var2 = this.getTransferDataFlavors();
-
- for(int var3 = 0; var3 < var2.length; ++var3) {
- if (var2[var3].equals(var1)) {
- return true;
- }
- }
-
- return false;
- }
-
- public Object getTransferData(DataFlavor var1) throws UnsupportedFlavorException, IOException {
- this.data = null;
- int[] var2 = convertFlavorToTargets(var1);
- if (var2.length == 0) {
- throw new UnsupportedFlavorException(var1);
- } else {
- SelectionThread var3 = new SelectionThread(this, var2);
- synchronized(var3){}
-
- try {
- try {
- ((Thread)var3).start();
- var3.wait();
- } catch (InterruptedException var9) {
- }
- } catch (Throwable var10) {
- throw var10;
- }
-
- if (this.data == null) {
- throw new IOException("could not get transfer data");
- } else if (var1.equals(DataFlavor.plainTextFlavor)) {
- return new StringBufferInputStream((String)this.data);
- } else {
- Class var4 = var1.getRepresentationClass();
-
- try {
- if (var4 == Class.forName("java.io.InputStream")) {
- throw new IOException("can't deal with InputStream yet");
- } else {
- return this.data;
- }
- } catch (ClassNotFoundException var8) {
- throw new IOException("couldn't get representation class");
- }
- }
- }
- }
-
- public void dispose() {
- selections.removeElement(this);
- this.pDispose();
- }
-
- static {
- init();
- selections = new Vector();
- registerTargetForFlavor(DataFlavor.stringFlavor, "STRING");
- registerTargetForFlavor(DataFlavor.plainTextFlavor, "STRING");
- targetMap = new Vector();
- Target var0 = new Target("STRING");
- var0.addFlavorMap(DataFlavor.stringFlavor);
- var0.addFlavorMap(DataFlavor.plainTextFlavor);
- targetMap.addElement(var0);
- var0 = new Target("COMPOUND_TEXT");
- var0.addFlavorMap(DataFlavor.stringFlavor);
- var0.addFlavorMap(DataFlavor.plainTextFlavor);
- targetMap.addElement(var0);
- }
- }
-