/*
*
*/
public void paint(Graphics g, Color c1, Color c2) {
Graphics2D g2 = (Graphics2D)g;
Paint oldPainter = g2.getPaint();
g2.setPaint(new GradientPaint(new Point2D.Double(0, 0), c1, new Point2D.Double(getWidth(), 0), c2));
g2.fillRect(0, 0, getWidth(), getHeight());
g2.setPaint(oldPainter);
}
/*
* Without gradiant paint
*/
public void paint(Graphics g, Color c1, Color c2) {
// Add gradient (This might be done before !!)
Graphics2D g2 = (Graphics2D)g;
for (int i = -1; i <= this.getWidth(); ++i) {
float ratio = (float)i / (float)this.getWidth();
int red = (int)(c2.getRed() * ratio + c1.getRed() * (1 - ratio));
int green = (int)(c2.getGreen() * ratio + c1.getGreen() * (1 - ratio));
int blue = (int)(c2.getBlue() * ratio + c1.getBlue() * (1 - ratio));
Color c = new Color(red, green, blue);
Rectangle2D r = new Rectangle2D.Float(1 + i, 0, this.getWidth(), this.getHeight());
g2.setPaint(c);
g2.fill(r);
}
// Paint using super methods
super.paint(g);
}
Java
/*
* Created on 14 avr. 2006
*/
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import javax.swing.JComponent;
import javax.swing.plaf.ComponentUI;
import javax.swing.plaf.basic.BasicSplitPaneDivider;
import javax.swing.plaf.basic.BasicSplitPaneUI;
/**
* MySplitPaneUI is a UI implementation of BasicSplitPaneUI
* that does not show any divider.
*
<pre>
* +----------+
* | Changes: |
* +----------+
* [19/09/2006]
* - Added
* </pre>
<p> */<br />
public class MySplitPaneUI extends BasicSplitPaneUI {</p>
<p> public static ComponentUI createUI(JComponent x) {<br />
return new MySplitPaneUI();<br />
}</p>
<p> public BasicSplitPaneDivider createDefaultDivider() {<br />
return new MySplitPaneDivider(this);<br />
}<br />
}</p>
<p>class MySplitPaneDivider extends BasicSplitPaneDivider {<br />
float strokeThickness = 2f;<br />
float miterLimit = 2f;<br />
float[] dashPattern = {2f};<br />
float dashPhase = 2f;</p>
<p> public MySplitPaneDivider(BasicSplitPaneUI ui) {<br />
super(ui);<br />
ui.getSplitPane().setContinuousLayout(true);<br />
}</p>
<p> protected class DragController extends BasicSplitPaneDivider.DragController {<br />
public DragController(MouseEvent event) {<br />
super(event);<br />
}<br />
}</p>
<p> public void paint(Graphics g) {<br />
// do not paint any thing ! if you want an invisible split pane (like Eclipse)<br />
// Paint 3 dots<br />
Graphics2D gg = (Graphics2D)g;<br />
gg.setColor(Color.darkGray);<br />
gg.setStroke(new BasicStroke(strokeThickness, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, miterLimit, dashPattern, dashPhase)); </p>
<p> if(this.splitPane.getOrientation() == JSplitPane.VERTICAL_SPLIT) {<br />
g.drawLine(getWidth()/2-7, getHeight()/2, getWidth()/2+7, getHeight()/2);<br />
} else {<br />
g.drawLine(getWidth()/2, getHeight()/2-7, getWidth()/2, getHeight()/2+7);<br />
}<br />
}<br />
}<br />
Java
protected void paintArrowExtremity(Graphics2D g, int x1, int y1, int x2, int y2, double factor) {
// Angles (téta)
double theta;
double thetabis = 0;
// Angle de la pointe
double alpha = Math.toRadians(90-30);
// Longueur de la fl?che
int l = (int) (7*factor);
int x[] = new int[3];
int y[] = new int[3];
theta = (x2-x1)/(Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)));
thetabis = Math.acos(theta);
if (y1<y2)
{
x[0]=x2;
x[1]=(int) (l*Math.cos(thetabis-Math.PI/2-alpha)+x2);
x[2]=(int) (l*Math.cos(thetabis+Math.PI/2+alpha)+x2);
y[0]=y2;
y[1]=(int) (l*Math.sin(thetabis-Math.PI/2-alpha)+y2);
y[2]=(int) (l*Math.sin(thetabis+Math.PI/2+alpha)+y2);
}
else
{
x[0]=x2;
x[1]=(int) (l*Math.cos(thetabis-Math.PI/2-alpha)+x2);
x[2]=(int) (l*Math.cos(thetabis+Math.PI/2+alpha)+x2);
y[0]=y2;
y[1]=y2+(y2-(int) (l*Math.sin(thetabis-Math.PI/2-alpha)+y2));
y[2]=y2+(y2-(int) (l*Math.sin(thetabis+Math.PI/2+alpha)+y2));
}
g.fillPolygon(x, y, 3);
}
Java
Dans le main du serveur:
LocateRegistry.createRegistry(9999);
System.setSecurityManager(new RMISecurityManager());
CalculatorImpl calc = new CalculatorImpl();
Naming.rebind("//localhost:9999/calculator", calc);
Coté client:
Calculator calc = (Calculator) Naming.lookup("//" + serverIP + ":" + portServer + "/calculator");
System.out.println(calc.add(2, 5));
Exécution:
java -cp $CLASSPATH -Djava.security.policy=policy.txt ServerMainClass
Java
/**
* Download a Content.
* @param mapping The action mapping
* @param form The action form
* @param request The requst
* @param response The response
* @return a valid struts mapping
*/
public final ActionForward download(final ActionMapping mapping, final ActionForm form, final HttpServletRequest request, final HttpServletResponse response) {
byte[] content = request.getParameter("content");
String fileName = request.getParameter("fileName");
String fileContentType = request.getParameter("fileContentType");
String view = request.getParameter("view");
OutputStream out = null;
try {
response.setHeader("Pragma", "public");
response.setHeader("Cache-Control", "max-age=1, must-revalidate");
// This will ask the user to open or save the content (without it the browser will try to download it)
if (!"true".toLowerCase().equals(view) || StringHelper.isEmpty(doc.getFileContentType())) {
response.setHeader("Content-Disposition", "attachment; filename="+fileName);
}
response.setContentLength(content.length);
if (!StringHelper.isEmpty(fileContentType)) {
response.setContentType(fileContentType);
} else {
response.setContentType("application/octet-stream");
}
out = response.getOutputStream();
out.write(content);
} catch (Exception ex) {
logger.error(ex.getMessage(), ex);
return mapping.findForward(ERROR);
} finally {
if (out != null) {
try {
out.flush();
out.close();
} catch (Exception ex) {
logger.error(ex.getMessage(), ex);
}
}
}
return null;
}
Java
/**
* Populate the bean prefix using request parameters.
* @param request The HTTP request
* @param form ..
* @param arrayKey ..
* @param arrayItemClazz ..
*/
public static void getPotentialNewElement(final HttpServletRequest request, final Object beanForm, final String arrayKey, final Class arrayItemClazz) throws Exception {
Object array = ReflectHelper.invokeGetter(beanForm, arrayKey);
if (array.getClass().isArray()) {
int offsetIndex = Array.getLength(array);
Object newArrayElement = null;
List getters = ReflectHelper.getGettersRecursivly(arrayItemClazz);
do {
for (Iterator iter = getters.iterator(); iter.hasNext();) {
Method getter = (Method) iter.next();
if (getter.getReturnType().getName().startsWith("java.lang.String")) {
String getterKey = ReflectHelper.getFieldName(getter);
String value = request.getParameter(arrayKey + "[" + offsetIndex + "]." + getter);
if (value != null) {
if (newArrayElement == null) {
newArrayElement = ReflectHelper.newInstance(arrayItemClazz.getName());
}
ReflectHelper.invokeSetter(newArrayElement, getterKey, value, String.class);
}
}
}
if (newArrayElement != null) {
Object newArray = Array.newInstance(arrayItemClazz, offsetIndex + 1);
for (int i = 0; i < offsetIndex; ++i) {
Array.set(newArray, i, Array.get(array, i));
}
offsetIndex++;
Array.set(newArray, offsetIndex, newArrayElement);
}
} while (newArrayElement != null);
}
}
Java
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class TestMain {
public static void main(String[] args) {
// construct test object
ObjectA originalObj = new ObjectA();
testSerialization(originalObj);
}
public static void testSerialization (Object originalObj)
{
ObjectA extractedObj = null;
// serialize
ByteArrayOutputStream out = new ByteArrayOutputStream();
ObjectOutputStream oos;
System.out.println("Trying to serialize the object...");
try {
oos = new ObjectOutputStream(out);
oos.writeObject(originalObj);
oos.close();
System.out.println("=>> Success.");
} catch (IOException e) {
System.err.println("=>> Failure: "+e.getMessage());
e.printStackTrace();
return;
}
//deserialize
byte[] pickled = out.toByteArray();
InputStream in = new ByteArrayInputStream(pickled);
ObjectInputStream ois;
System.out.println("Trying to deserialize the object...");
try {
ois = new ObjectInputStream(in);
Object obj = ois.readObject();
extractedObj = (ObjectA) obj;
System.out.println("=>> Success.");
} catch (IOException e) {
System.err.println("=>> Failure: "+e.getMessage());
return;
} catch (ClassNotFoundException e) {
System.err.println("=>> Failure: "+e.getMessage());
e.printStackTrace();
return;
}
// test the result
System.out.println("Inuring that the extracted object is equal to the original one...");
if (!originalObj.equals(extractedObj)) {
System.err.println("=>> Failure: Objects are not equals.");
return;
} else {
System.out.println("=>> Success.");
}
}
}
Java
public static Package[] getSubPackages(Package pckg) throws IOException, ClassNotFoundException {
// Translate the package name into an absolute path
String name = "/" + pckg.getName().replace('.','/');
// Get a File object for the package
URL url = Launcher.class.getResource(name);
File directory = new File(url.getFile());
if (directory.exists()) {
// Get the list of the files contained in the package
File[] files = directory.listFiles();
ArrayList pckgs = new ArrayList();
for (int i=0; i<files.length;++i) {
// we are only interested in .class files
if (files[i].isDirectory()) {
// removes the .class extension
pckgs.add(Package.getPackage(pckg.getName()+"."+files[i].getName()));
}
}
Package[] packages = new Package[pckgs.size()];
for (int i=0; i<pckgs.size();++i) packages[i] = (Package)pckgs.get(i);
return packages;
} else {
throw new IOException("Invalid directory: "+url);
}
}
Java
// Print a debug message with the class container name and the line position
public static void debug(String message) {
try {
throw new Throwable();
} catch (Throwable th) {
StackTraceElement elmt = th.getStackTrace()[1];
System.out.println("[DEBUG] "+elmt.getClassName()+"."+elmt.getMethodName()+"("+elmt.getFileName()+":"+elmt.getLineNumber()+") # "+message);
}
}
Java
package com.pingus.dnd.transferables;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.IOException;
import java.util.ArrayList;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
public class TransferableLabel extends TransferableObject {
public TransferableLabel(final JLabel label, final DataFlavor[] acceptedFlavors, final Transferable defaultTransferableObject) {
super(label, acceptedFlavors, defaultTransferableObject);
}
public TransferableLabel(final JLabel label, final ArrayList acceptedFlavors, final Transferable defaultTransferableObject) {
super(label, acceptedFlavors, defaultTransferableObject);
}
public Object getTransferData(final DataFlavor flavor) throws UnsupportedFlavorException, IOException {
if(flavor.equals(getPreferredFlavor())) {
System.out.println("[TransferableLabel] <getTransferData> returning label");
// Return JLabel
return this.getObject();
} else if(flavor.equals(DataFlavor.imageFlavor)) {
System.out.println("[TransferableLabel] <getTransferData> returning ...");
// Return Image
Icon icon = ((JLabel)this.getObject()).getIcon();
if (icon instanceof ImageIcon) {
System.out.println("[TransferableLabel] <getTransferData> Image.");
return ((ImageIcon) icon).getImage();
}
} else if(flavor.equals(DataFlavor.stringFlavor)) {
System.out.println("[TransferableLabel] <getTransferData> returning label text");
// Return label text
return ((JLabel)this.getObject()).getText();
} else if(flavor.equals(DataFlavor.getTextPlainUnicodeFlavor())) {
return TransferableObject.exportAsInputStream(((JLabel)this.getObject()).getText(), flavor);
}
System.out.println("[TransferableLabel] <getTransferData> returning nothing");
System.out.println("[TransferableLabel] <getTransferData> for flavor "+flavor);
return super.getTransferData(flavor);
}
}
Java