package net.miginfocom.layout;
-//import java.beans.Beans;
-//import java.beans.ExceptionListener;
-//import java.beans.Introspector;
-//import java.beans.PersistenceDelegate;
-//import java.beans.XMLDecoder;
-//import java.beans.XMLEncoder;
-//import java.io.ByteArrayInputStream;
-//import java.io.ByteArrayOutputStream;
-import java.io.EOFException;
-import java.io.IOException;
-//import java.io.ObjectInput;
-//import java.io.ObjectOutput;
-//import java.io.OutputStream;
+import java.beans.*;
+import java.io.*;
import java.util.IdentityHashMap;
import java.util.TreeSet;
import java.util.WeakHashMap;
private static volatile WeakHashMap<Object, Boolean> DT_MAP = null; // The Containers that have design time. Value not used.
private static int eSz = 0;
private static int globalDebugMillis = 0;
-
- // public static final boolean HAS_BEANS = hasBeans();
-
-// private static boolean hasBeans()
-// {
-// try {
-// LayoutUtil.class.getClassLoader().loadClass("java.beans.Beans");
-// return true;
-// } catch (Throwable e) {
-// return false;
-// }
-// }
+ public static final boolean HAS_BEANS = hasBeans();
+
+ private static boolean hasBeans()
+ {
+ try {
+ LayoutUtil.class.getClassLoader().loadClass("java.beans.Beans");
+ return true;
+ } catch (Throwable e) {
+ return false;
+ }
+ }
private LayoutUtil()
{
public static boolean isDesignTime(ContainerWrapper cw)
{
if (DT_MAP == null)
- return false;// BH 2018 //HAS_BEANS && Beans.isDesignTime();
+ return HAS_BEANS && Beans.isDesignTime();
// assume design time "in general" (cw is null) if there is at least one container with design time
// (for storing constraints creation strings in method putCCString())
}
}
-// /** Sets/add the persistence delegates to be used for a class.
-// * @param c The class to set the registered delegate for.
-// * @param del The new delegate or <code>null</code> to erase to old one.
-// */
-// static synchronized void setDelegate(Class<?> c, PersistenceDelegate del)
-// {
-// try {
-// Introspector.getBeanInfo(c, Introspector.IGNORE_ALL_BEANINFO).getBeanDescriptor().setValue("persistenceDelegate", del);
-// } catch (Exception ignored) {
-// }
-// }
+ /** Sets/add the persistence delegates to be used for a class.
+ * @param c The class to set the registered delegate for.
+ * @param del The new delegate or <code>null</code> to erase to old one.
+ */
+ static synchronized void setDelegate(Class<?> c, PersistenceDelegate del)
+ {
+ try {
+ Introspector.getBeanInfo(c, Introspector.IGNORE_ALL_BEANINFO).getBeanDescriptor().setValue("persistenceDelegate", del);
+ } catch (Exception ignored) {
+ }
+ }
/** Returns strings set with {@link #putCCString(Object, String)} or <code>null</code> if nothing is associated or
* {@link LayoutUtil#isDesignTime(ContainerWrapper)} returns <code>false</code>.
return (i != null && i[side] != null) ? i[side] : (getDefault ? PlatformDefaults.getPanelInsets(side) : UnitValue.ZERO);
}
-// /** Writes the object and CLOSES the stream. Uses the persistence delegate registered in this class.
-// * @param os The stream to write to. Will be closed.
-// * @param o The object to be serialized.
-// * @param listener The listener to receive the exceptions if there are any. If <code>null</code> not used.
-// */
-// static void writeXMLObject(OutputStream os, Object o, ExceptionListener listener)
-// {
-// ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader();
-// Thread.currentThread().setContextClassLoader(LayoutUtil.class.getClassLoader());
-//
-// XMLEncoder encoder = new XMLEncoder(os);
-//
-// if (listener != null)
-// encoder.setExceptionListener(listener);
-//
-// encoder.writeObject(o);
-// encoder.close(); // Must be closed to write.
-//
-// Thread.currentThread().setContextClassLoader(oldClassLoader);
-// }
-//
-// private static ByteArrayOutputStream writeOutputStream = null;
-// /** Writes an object to XML.
-// * @param out The object out to write to. Will not be closed.
-// * @param o The object to write.
-// */
-// public static synchronized void writeAsXML(ObjectOutput out, Object o) throws IOException
-// {
-// if (writeOutputStream == null)
-// writeOutputStream = new ByteArrayOutputStream(16384);
-//
-// writeOutputStream.reset();
-//
-// writeXMLObject(writeOutputStream, o, new ExceptionListener() {
-// @Override
-// public void exceptionThrown(Exception e) {
-// e.printStackTrace();
-// }});
-//
-// byte[] buf = writeOutputStream.toByteArray();
-//
-// out.writeInt(buf.length);
-// out.write(buf);
-// }
-//
-// private static byte[] readBuf = null;
-// /** Reads an object from <code>in</code> using the
-// * @param in The object input to read from.
-// * @return The object. Never <code>null</code>.
-// * @throws IOException If there was a problem saving as XML
-// */
-// public static synchronized Object readAsXML(ObjectInput in) throws IOException
-// {
-// if (readBuf == null)
-// readBuf = new byte[16384];
-//
-// Thread cThread = Thread.currentThread();
-// ClassLoader oldCL = null;
-//
-// try {
-// oldCL = cThread.getContextClassLoader();
-// cThread.setContextClassLoader(LayoutUtil.class.getClassLoader());
-// } catch(SecurityException ignored) {
-// }
-//
-// Object o = null;
-// try {
-// int length = in.readInt();
-// if (length > readBuf.length)
-// readBuf = new byte[length];
-//
-// in.readFully(readBuf, 0, length);
-//
-// o = new XMLDecoder(new ByteArrayInputStream(readBuf, 0, length)).readObject();
-//
-// } catch(EOFException ignored) {
-// }
-//
-// if (oldCL != null)
-// cThread.setContextClassLoader(oldCL);
-//
-// return o;
-// }
+ /** Writes the object and CLOSES the stream. Uses the persistence delegate registered in this class.
+ * @param os The stream to write to. Will be closed.
+ * @param o The object to be serialized.
+ * @param listener The listener to receive the exceptions if there are any. If <code>null</code> not used.
+ */
+ static void writeXMLObject(OutputStream os, Object o, ExceptionListener listener)
+ {
+ ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader();
+ Thread.currentThread().setContextClassLoader(LayoutUtil.class.getClassLoader());
+
+ XMLEncoder encoder = new XMLEncoder(os);
+
+ if (listener != null)
+ encoder.setExceptionListener(listener);
+
+ encoder.writeObject(o);
+ encoder.close(); // Must be closed to write.
+
+ Thread.currentThread().setContextClassLoader(oldClassLoader);
+ }
+
+ private static ByteArrayOutputStream writeOutputStream = null;
+ /** Writes an object to XML.
+ * @param out The object out to write to. Will not be closed.
+ * @param o The object to write.
+ */
+ public static synchronized void writeAsXML(ObjectOutput out, Object o) throws IOException
+ {
+ if (writeOutputStream == null)
+ writeOutputStream = new ByteArrayOutputStream(16384);
+
+ writeOutputStream.reset();
+
+ writeXMLObject(writeOutputStream, o, new ExceptionListener() {
+ @Override
+ public void exceptionThrown(Exception e) {
+ e.printStackTrace();
+ }});
+
+ byte[] buf = writeOutputStream.toByteArray();
+
+ out.writeInt(buf.length);
+ out.write(buf);
+ }
+
+ private static byte[] readBuf = null;
+ /** Reads an object from <code>in</code> using the
+ * @param in The object input to read from.
+ * @return The object. Never <code>null</code>.
+ * @throws IOException If there was a problem saving as XML
+ */
+ public static synchronized Object readAsXML(ObjectInput in) throws IOException
+ {
+ if (readBuf == null)
+ readBuf = new byte[16384];
+
+ Thread cThread = Thread.currentThread();
+ ClassLoader oldCL = null;
+
+ try {
+ oldCL = cThread.getContextClassLoader();
+ cThread.setContextClassLoader(LayoutUtil.class.getClassLoader());
+ } catch(SecurityException ignored) {
+ }
+
+ Object o = null;
+ try {
+ int length = in.readInt();
+ if (length > readBuf.length)
+ readBuf = new byte[length];
+
+ in.readFully(readBuf, 0, length);
+
+ o = new XMLDecoder(new ByteArrayInputStream(readBuf, 0, length)).readObject();
+
+ } catch(EOFException ignored) {
+ }
+
+ if (oldCL != null)
+ cThread.setContextClassLoader(oldCL);
+
+ return o;
+ }
private static final IdentityHashMap<Object, Object> SER_MAP = new IdentityHashMap<Object, Object>(2);