Archive

Archives pour la catégorie ‘Java’

[DnD] LabelSelection class

28/01/2009
Commentaires fermés

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

[DnD] TransferableObject class

28/01/2009
Commentaires fermés

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

Run a Groovy script from a java class

28/01/2009
Commentaires fermés

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

TCPMon: TCP proxy watcher … (axis.jar form apache foundation)

28/01/2009
Commentaires fermés

java -classpath axis.jar org.apache.axis.utils.tcpmon

Java

Serialize an object in Java

28/01/2009
Commentaires fermés

     // 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

Implement an Unix cat command in Java

28/01/2009
Commentaires fermés

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

Implement an Unix grep in Java

28/01/2009
Commentaires fermés

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

HTML Browser (DocumentViewer)

28/01/2009
Commentaires fermés

/*
 * 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