package com.pingus.dnd.transferables.handlers;
import java.awt.Image;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.IOException;
import javax.swing.ImageIcon;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.TransferHandler;
import com.pingus.dnd.transferables.TransferableLabel;
import com.pingus.dnd.transferables.TransferableObject;
public class LabelSelection extends TransferHandler {
private static final DataFlavor[] STANDARD_FLAVORS = new DataFlavor[] {
DataFlavor.imageFlavor,
DataFlavor.stringFlavor,
DataFlavor.getTextPlainUnicodeFlavor()
};
/**
* Creates a new instance of TreeTransferHandler
*/
public LabelSelection() {
super();
}
public int getSourceActions(JComponent c) {
return TransferHandler.COPY_OR_MOVE;
}
protected Transferable createTransferable(final JComponent component) {
System.out.println("[LabelTransferHandler] <createTransferable>");
if (component instanceof JLabel) {
return new TransferableLabel((JLabel)component, STANDARD_FLAVORS, super.createTransferable(component));
/*
return new TransferableObject(component, STANDARD_FLAVORS, super.createTransferable(component)) {
public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {
if(flavor.equals(getPreferredFlavor())) {
System.out.println("[LabelTransferHandler] <createTransferable> [TransferableObject] <getTransferData> returning label");
// Return JLabel
return component;
} else if(flavor.equals(DataFlavor.imageFlavor)) {
System.out.println("[LabelTransferHandler] <createTransferable> [TransferableObject] <getTransferData> returning ...");
// Return Image
Icon icon = ((JLabel)component).getIcon();
if (icon instanceof ImageIcon) {
System.out.println("[LabelTransferHandler] <createTransferable> [TransferableObject] <getTransferData> Image.");
return ((ImageIcon) icon).getImage();
}
} else if(flavor.equals(DataFlavor.stringFlavor)) {
System.out.println("[LabelTransferHandler] <createTransferable> [TransferableObject] <getTransferData> returning label text");
// Return label text
return ((JLabel)component).getText();
} else if(flavor.equals(DataFlavor.getTextPlainUnicodeFlavor())) {
return this.exportAsInputStream(((JLabel)component).getText(), flavor);
}
System.out.println("[LabelTransferHandler] <createTransferable> [TransferableObject] <getTransferData> returning nothing");
System.out.println("[LabelTransferHandler] <createTransferable> [TransferableObject] <getTransferData> for flavor "+flavor);
return super.getTransferData(flavor);
}
};
/**/
}
return new TransferableObject(component, STANDARD_FLAVORS, super.createTransferable(component));
}
public boolean importData(JComponent comp, Transferable t) {
System.out.println("[LabelTransferHandler] <inportData>");
if (comp instanceof JLabel) {
JLabel label = (JLabel) comp;
DataFlavor labelFlavor = new DataFlavor(comp.getClass(), comp.getClass().getName());
try {
if (t.isDataFlavorSupported(labelFlavor)) {
System.out.println("[LabelTransferHandler] Importing Label");
JLabel dropedObject = (JLabel) t.getTransferData(labelFlavor);
System.out.println("[LabelTransferHandler] Setting icon");
label.setIcon(dropedObject.getIcon());
System.out.println("[LabelTransferHandler] Setting text to " + dropedObject.getText());
label.setText(dropedObject.getText());
System.out.println("[LabelTransferHandler] Setting tool tip text to " + dropedObject.getToolTipText());
label.setToolTipText(dropedObject.getToolTipText());
System.out.println("[LabelTransferHandler] Repaint label");
label.repaint();
return true;
} else if (t.isDataFlavorSupported(DataFlavor.imageFlavor)) {
System.out.println("[LabelTransferHandler] Importing Image ...");
Image image = (Image) t.getTransferData(DataFlavor.imageFlavor);
ImageIcon icon = new ImageIcon(image);
label.setIcon(icon);
return true;
} else if (t.isDataFlavorSupported(DataFlavor.stringFlavor)) {
System.out.println("[LabelTransferHandler] Importing text ...");
String text = (String)t.getTransferData(DataFlavor.stringFlavor);
label.setText(text);
return true;
} else if (t.isDataFlavorSupported(DataFlavor.getTextPlainUnicodeFlavor())) {
label.setText(TransferableObject.importAsInputStream(t));
return true;
}
} catch (RuntimeException ex) {
ex.printStackTrace();
} catch (UnsupportedFlavorException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
}
return super.importData(comp, t);
}
public boolean canImport(JComponent comp, DataFlavor flavor[]) {
if (!(comp instanceof JLabel)) {
return false;
}
for (int i=0; i<flavor.length; ++i) {
for (int j=0; j<STANDARD_FLAVORS.length; ++j) {
if (flavor[i].equals(STANDARD_FLAVORS[j])) {
return true;
}
}
}
System.out.println("[LabelSelection] <canImport> returning false");
return false;
}
}
Java
package com.pingus.dnd.transferables;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
public class TransferableObject implements Transferable {
private Object obj;
private DataFlavor thisFlavor;
private ArrayList acceptedFlavors;
private Transferable defaultTransferableObject;
/**
* Creates a new instance of TransferableObject
*/
public TransferableObject(Object obj, DataFlavor[] acceptedFlavors, Transferable defaultTransferableObject) {
super();
this.obj = obj;
this.acceptedFlavors = toArrayList(acceptedFlavors);
this.thisFlavor = new DataFlavor(obj.getClass(), obj.getClass().getName());
if(!this.acceptedFlavors.contains(thisFlavor)) this.acceptedFlavors.add(thisFlavor);
this.defaultTransferableObject = defaultTransferableObject;
}
/**
* Creates a new instance of TransferableObject
*/
public TransferableObject(Object obj, ArrayList acceptedFlavors, Transferable defaultTransferableObject) {
super();
this.obj = obj;
this.acceptedFlavors = acceptedFlavors;
this.thisFlavor = new DataFlavor(obj.getClass(), obj.getClass().getName());
if(!this.acceptedFlavors.contains(thisFlavor)) this.acceptedFlavors.add(thisFlavor);
this.defaultTransferableObject = defaultTransferableObject;
}
public static ArrayList toArrayList(Object[] objects) {
ArrayList list = new ArrayList(objects.length);
for(int i=0; i<objects.length; ++i) {
list.add(objects[i]);
}
return list;
}
public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {
System.out.println("[TransferableObject] <getTransferData> flavor: "+flavor);
System.out.println("[TransferableObject] <getTransferData> thisFlavor: "+thisFlavor);
if (flavor.equals(thisFlavor)) {
return obj;
}
return this.defaultTransferableObject.getTransferData(flavor);
}
/**
* @return Returns the object.
*/
public Object getObject() {
return this.obj;
}
public DataFlavor[] getTransferDataFlavors() {
DataFlavor[] fl = new DataFlavor[acceptedFlavors.size()];
for(int i=0; i<fl.length; ++i) {
fl[i] = (DataFlavor)acceptedFlavors.get(i);
}
return fl;
}
public boolean isDataFlavorSupported(DataFlavor flavor) {
return acceptedFlavors.contains(flavor);
}
/**
* @return Returns the defaultTransferableObject.
*/
public Transferable getDefaultTransferableObject() {
return this.defaultTransferableObject;
}
/**
* @return Returns the best Flavor of the transferable object.
*/
public DataFlavor getPreferredFlavor() {
return this.thisFlavor;
}
/**
* Util method that transform text into InputStream using a given DataFlavor.
* @param text The String to be exported
* @param flavor The DataFlavor that request the export.
* @return An InputStream containing the <code>text</code>
* @throws UnsupportedEncodingException ...
*/
public static InputStream exportAsInputStream(String text, DataFlavor flavor) throws UnsupportedEncodingException {
String charset = flavor.getMimeType().replaceFirst(".*charset=", "");
System.out.println("[TransferableObject] <exportAsInputStream> Charset: "+charset);
return new ByteArrayInputStream(text.getBytes(charset));
}
/**
* Util method that transform the transferable object from TextPlainUnicode to String.
* @param transferable The transferable object to be imported.
* @return The String representation of the transferable as TextPlainUnicode.
* @throws UnsupportedFlavorException ...
* @throws IOException ...
*/
public static String importAsInputStream(Transferable transferable) throws UnsupportedFlavorException, IOException {
BufferedReader sr = new BufferedReader(DataFlavor.getTextPlainUnicodeFlavor().getReaderForText(transferable));
String line = null;
String plainText = "";
while((line = sr.readLine()) != null) {
plainText += line;
}
return plainText;
}
}
Java
import java.io.File;
import groovy.lang.Binding;
import groovy.util.GroovyScriptEngine;
public class GroovyRunner {
/**
* Usage: GroovyRunner [groovy file]
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
if(args.length == 1) {
File groovyFile = new File(args[0]);
String[] roots = new String[] {groovyFile.getParentFile().getAbsolutePath()};
GroovyScriptEngine gse = new GroovyScriptEngine(roots);
Binding binding = new Binding();
binding.setVariable("args", roots);
gse.run(groovyFile.getName(), binding);
} else {
System.out.println("usage: "+GroovyRunner.class.getName()+" [groovy file]");
}
}
}
Java
java -classpath axis.jar org.apache.axis.utils.tcpmon
Java
// Lecture de l'objet
try {
FileInputStream istream = new FileInputStream("fic.data");
ObjectInputStream p = new ObjectInputStream(istream);
my_object = (ClassDeMyObject)p.readObject();
istream.close();
} catch(Exception e) {
e.printStackTrace();
}
// Ecriture de l'objet
try {
FileOutputStream ostream = new FileOutputStream("fic.data");
ObjectOutputStream p = new ObjectOutputStream(ostream);
p.writeObject(OptionsFrame.pertAttributes);
p.flush();
ostream.close();
} catch (Exception e) {
e.printStackTrace();
}
Java
import org.apache.regexp.*;
import java.util.*;
import java.io.*;
/**
*
* So as to test it run %JAVA_HOME%binjava -classpath .;jakarta-regexp.jar StringTool 2
*
*/
public class cat {
public static void main(String[] argv) {
try {
for(int i=0; i<argv.length; ++i) {
FileReader in = new FileReader(new File(argv[i]));
BufferedReader r = new BufferedReader(in);
String line = r.readLine();
while(line != null) {
System.out.println(line);
line = r.readLine();
}
r.close();
}
} catch(Exception e) {
e.printStackTrace();
}
}
}
Java
import org.apache.regexp.*;
import java.util.*;
import java.io.*;
/**
* So as to test it run %JAVA_HOME%\bin\java -classpath .;jakarta-regexp.jar StringTool 2
*/
public class grep {
public static String[] split(String source, String regexp) {
RE re = new RE(regexp);
return re.split(source);
}
public static String[] grep(Object[] sources, String regexp) {
RE re = new RE(regexp);
return re.grep(sources);
}
public static boolean match(String source, String regexp) {
RE re = new RE(regexp);
return re.match(source);
}
public static void main(String[] argv) {
try {
if(argv.length == 2) {
//File f = new File(argv[1]);
//FileReader r = new FileReader(new File(argv[1]));
FileReader in = new FileReader(new File(argv[1]));
BufferedReader r = new BufferedReader(in);
String line = r.readLine();
while(line != null) {
if(match(line, argv[0])) System.out.println(line);
line = r.readLine();
}
r.close();
} else {
System.out.println("Usage: grep regexp file");
}
} catch(Exception e) {
e.printStackTrace();
}
}
}
Java
/*
* DocumentViewer.java 1.0
*
* Gabriel Dromard
*/
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.*;
import javax.swing.text.html.*;
import java.awt.*;
import java.awt.event.*;
import java.net.URL;
import java.io.IOException;
// Classe de fen??tre Swing permettant de visualiser un
// document (HTML ou texte)
public class DocumentViewer extends JFrame implements HyperlinkListener, ActionListener {
// Composant Swing permettant de visualiser un document
JEditorPane viewer = new JEditorPane ();
// Champ de saisie de l'URL ? visualiser
JTextField urlTextField = new JTextField ();
public DocumentViewer () {
// Construction de l'Interface Graphique
// Panel en haut avec un label et le champ de saisie
JPanel inputPanel = new JPanel (new BorderLayout ());
JLabel label = new JLabel ("URL : ");
inputPanel.add (label, BorderLayout.WEST);
inputPanel.add (urlTextField, BorderLayout.CENTER);
// Zone scroll??e au centre avec le document
JScrollPane scrollPane = new JScrollPane (viewer);
// Ajout des composants ? la fen??tre
getContentPane ().add (inputPanel, BorderLayout.NORTH);
getContentPane ().add (scrollPane, BorderLayout.CENTER);
// Mode non editable pour recevoir les clics sur les
// liens hypertexte
viewer.setEditable (false);
// Ajout du listener de clic sur lien
viewer.addHyperlinkListener (this);
// Ajout du listener de modification de la saisie
urlTextField.addActionListener (this);
}
// M??thode appel??e apr?¨s un clic sur un lien hyper texte
public void hyperlinkUpdate (HyperlinkEvent event) {
if (event.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
// Modification du champ de saisie
urlTextField.setText (event.getURL ().toString ());
if (event instanceof HTMLFrameHyperlinkEvent) {
// Evenement sp??cial en cas d'utilisation de Frame HTML
HTMLDocument doc = (HTMLDocument)viewer.getDocument ();
doc.processHTMLFrameHyperlinkEvent (
(HTMLFrameHyperlinkEvent)event);
} else {
// Chargement de la page
loadPage (urlTextField.getText ());
}
}
}
// M??thode appel??e apr?¨s une modification de la saisie
public void actionPerformed (ActionEvent event) {
loadPage (urlTextField.getText ());
}
public void loadPage (String urlText) {
try {
// Modification du document visualise
viewer.setPage (new URL (urlText));
} catch (IOException ex) {
System.err.println ("Acces impossible a " + urlText);
}
}
// M??thode main () d'exemple de mise en oeuvre.
// Utilisation : java DocumentViewer
public static void main (String [] args) {
JFrame viewerFrame = new DocumentViewer ();
viewerFrame.setSize (400, 300);
viewerFrame.show ();
}
}
Java