Ejemplo n.º 1
0
 def __init__(self, base_class_name, d=None):
     '''Initialize the proxy with the interface name and methods
     
     :param base_class_name: the class name of the interface to implement
                             in dotted form (e.g. java.lang.Runnable)
     :param d: an optional dictionary of method name to implementation
     '''
     self.ref_id, self.ref = J.create_jref(self)
     self.__d = d or {}
     jclass = J.class_for_name(base_class_name)
     loader = J.call(jclass, "getClassLoader",
                     "()Ljava/lang/ClassLoader;")
     env = J.get_env()
     classes = env.make_object_array(1, env.find_class("java/lang/Class"))
     env.set_object_array_element(classes, 0, jclass)
     handler = J.make_instance(
         "org/cellprofiler/javabridge/CPythonInvocationHandler",
         "(Ljava/lang/String;)V", self.ref_id)
     self.o = J.static_call(
         "java/lang/reflect/Proxy",
         "newProxyInstance",
         "(Ljava/lang/ClassLoader;"
         "[Ljava/lang/Class;"
         "Ljava/lang/reflect/InvocationHandler;)"
         "Ljava/lang/Object;",
         loader, classes, handler)
Ejemplo n.º 2
0
 def test_12_01_jref(self):
     o = dict(foo="bar", baz="2")
     ref_id, ref = javabridge.create_jref(o)
     alt = javabridge.redeem_jref(ref_id)
     o["bar"] = "bunny"
     for key in o:
         self.assertTrue(key in alt)
         self.assertEqual(o[key], alt[key])
Ejemplo n.º 3
0
 def test_12_01_jref(self):
     o = dict(foo="bar", baz="2")
     ref_id, ref = javabridge.create_jref(o)
     alt = javabridge.redeem_jref(ref_id)
     o["bar"] = "bunny"
     for key in o:
         self.assertTrue(key in alt)
         self.assertEqual(o[key], alt[key])
Ejemplo n.º 4
0
    def __init__(self, figure):
        FigureCanvasAgg.__init__(self, figure)
        self.__ref_id, self.__ref = javabridge.create_jref(self)
        self.__cpython = javabridge.make_instance(
            'org/cellprofiler/javabridge/CPython', '()V')

        paint_script = (
            'import javabridge\n'
            'self = javabridge.redeem_jref("%s")\n'
            'self.draw(javabridge.JWrapper(graphics))\n') % self.__ref_id

        component = javabridge.run_script(
            """
        new javax.swing.JComponent() {
            paintComponent: function(graphics) {
                locals = new java.util.Hashtable();
                locals.put("graphics", graphics);
                cpython.exec(script, locals, locals);
            }
        }
        """, dict(cpython=self.__cpython, script=paint_script))
        self.__component = javabridge.JWrapper(component)
        self.__event_queue_class = None
        self.__component_listener = javabridge.JProxy(
            'java.awt.event.ComponentListener',
            dict(componentHidden=self._on_component_hidden,
                 componentMoved=self._on_component_moved,
                 componentResized=self._on_component_resized,
                 componentShown=self._on_component_shown))
        self.__component.addComponentListener(self.__component_listener.o)
        self.__key_event_cls = javabridge.JClassWrapper(
            'java.awt.event.KeyEvent')
        self.__key_listener = javabridge.JProxy(
            'java.awt.event.KeyListener',
            dict(keyPressed=self._on_key_pressed,
                 keyReleased=self._on_key_released,
                 keyTyped=self._on_key_typed))
        self.__component.addKeyListener(self.__key_listener.o)
        self.__component.setFocusable(True)
        self.__mouse_listener = javabridge.JProxy(
            'java.awt.event.MouseListener',
            dict(mouseClicked=self._on_mouse_clicked,
                 mouseEntered=self._on_mouse_entered,
                 mouseExited=self._on_mouse_exited,
                 mousePressed=self._on_mouse_pressed,
                 mouseReleased=self._on_mouse_released))
        self.__component.addMouseListener(self.__mouse_listener.o)
        self.__mouse_motion_listener = javabridge.JProxy(
            'java.awt.event.MouseMotionListener',
            dict(mouseDragged=self._on_mouse_dragged,
                 mouseMoved=self._on_mouse_moved))
        self.__component.addMouseMotionListener(self.__mouse_motion_listener.o)
Ejemplo n.º 5
0
 def __init__(self, base_class_name, d=None):
     '''Initialize the proxy with the interface name and methods
     
     :param base_class_name: the class name of the interface to implement
                             in dotted form (e.g. java.lang.Runnable)
     :param d: an optional dictionary of method name to implementation
     '''
     self.ref_id, self.ref = J.create_jref(self)
     self.__d = d or {}
     jclass = J.class_for_name(base_class_name)
     loader = J.call(jclass, "getClassLoader", "()Ljava/lang/ClassLoader;")
     env = J.get_env()
     classes = env.make_object_array(1, env.find_class("java/lang/Class"))
     env.set_object_array_element(classes, 0, jclass)
     handler = J.make_instance(
         "org/cellprofiler/javabridge/CPythonInvocationHandler",
         "(Ljava/lang/String;)V", self.ref_id)
     self.o = J.static_call(
         "java/lang/reflect/Proxy", "newProxyInstance",
         "(Ljava/lang/ClassLoader;"
         "[Ljava/lang/Class;"
         "Ljava/lang/reflect/InvocationHandler;)"
         "Ljava/lang/Object;", loader, classes, handler)
Ejemplo n.º 6
0
 def test_12_02_jref_lost(self):
     o = dict(foo="bar", baz="2")
     ref_id, ref = javabridge.create_jref(o)
     del ref
     self.assertRaises(KeyError, javabridge.redeem_jref, ref_id)
Ejemplo n.º 7
0
 def test_12_02_jref_lost(self):
     o = dict(foo="bar", baz="2")
     ref_id, ref = javabridge.create_jref(o)
     del ref
     self.assertRaises(KeyError, javabridge.redeem_jref, ref_id)
Ejemplo n.º 8
0
    figure = plt.figure()
    ax = figure.add_axes([.05, .05, .9, .9])
    x = np.linspace(0, np.pi * 8)
    ax.plot(x, np.sin(x))
    canvas = figure.canvas
    frame = canvas.component.getTopLevelAncestor()
    toolbar = plt.get_current_fig_manager().frame.toolbar
    toolbar.add_button(lambda event: popup_script_dlg(canvas), "hand")
    plt.show()
    return frame, canvas, toolbar


javabridge.start_vm()
javabridge.activate_awt()
event = threading.Event()
event_ref_id, event_ref = javabridge.create_jref(event)
cpython = javabridge.JClassWrapper('org.cellprofiler.javabridge.CPython')()
set_event_script = ('import javabridge\n'
                    'event = javabridge.redeem_jref("%s")\n'
                    'event.set()') % event_ref_id
adapter = javabridge.run_script(
    """
new java.awt.event.WindowAdapter() {
    windowClosed: function(e) {
        cpython.exec(script);
    }
}
""", dict(cpython=cpython, script=set_event_script))
frame, canvas, toolbar = run_ui()
frame.addWindowListener(adapter)
frame.setVisible(True)