1+ O2Setup.extractEmbededConfigZips();
2+
3+ //Set value of Bridge.homeDir
4+ var jni4NetDir = PublicDI.config.ToolsOrApis.pathCombine(@"Jni4Net\lib");
5+ var fieldInfo = (FieldInfo)typeof(Bridge).field("homeDir");
6+ PublicDI.reflection.setField(fieldInfo, jni4NetDir);
7+ //return typeof(Bridge).fieldValue("homeDir");
8+
9+ "jni4net.j-0.8.6.0.jar location: {0}".info(Bridge.FindJar());
10+
11+ //stand-alone tool not working (not finding the "jni4net.j-0.8.6.0.jar");
12+
13+ //"jni4net.n-0.8.6.0.dll is at: {0}".info("jni4net.n-0.8.6.0.dll".assembly_Location());
14+ var topPanel = "Util - JavaBean REPL - {0}".format(clr.details()).popupWindow(800,400)
15+ .insert_LogViewer();
16+ //var topPanel = panel.clear().add_Panel();
17+
18+ Action execute =null;
19+
20+ var replGui = topPanel.add_REPL_Gui();
21+ replGui.On_ExecuteCode = ()=> execute();
22+
23+ replGui.Output_Panel.insert_Below("Console Out").add_ConsoleOut();
24+
25+ "test console out".console_WriteLine();
26+
27+ var codeText = replGui.Code_Panel.add_SourceCodeViewer();
28+ var toolStrip = topPanel.insert_Above_ToolStrip()
29+ .add_Button("Run", "btExecuteSelectedMethod_Image".formImage(),()=> execute())
30+ .toolStrip();
31+ var samplesMenu = toolStrip.add_DropDown("Java BeanShell Code Samples", "help_browser".formImage());
32+ var beanShellJar = "http://www.beanshell.org/bsh-2.0b4.jar".uri().download(false);
33+ //configure Jni4Net bridge and BeanShell
34+ "Configuring Jnu4Net".info();
35+ var jni4Net = new API_Jni4Net();
36+ jni4Net.setUpBride();
37+ "Default Jni4Net bridge setup ".info();
38+
39+ var interpreterClass = beanShellJar.java_Jar_Class("bsh.Interpreter");
40+ if(interpreterClass.isNull() && clr.x86()) // most likely means it couldn't find a compatible
41+ {
42+ var javaHomeLocation = @"C:\Program Files (x86)\Java\jre7";
43+ "interpretreClass was null, and this is a 32bit process, so to set-up bridge with JavaHome: {0}".error(javaHomeLocation);
44+ var bridgeSetup = new BridgeSetup() { JavaHome = javaHomeLocation};
45+ jni4Net.setUpBride(bridgeSetup);
46+ interpreterClass = beanShellJar.java_Jar_Class("bsh.Interpreter");
47+ }
48+ var interpreter = interpreterClass.ctor();
49+
50+ if (interpreter.isNull())
51+ {
52+ "Failed to create interpreter instance".error();
53+ }
54+
55+ [email protected] ("Hello Java world!");
56+
57+ //set execute method
58+ execute =
59+ ()=>{
60+ var code = codeText.get_Text().java_String();
61+ try
62+ {
63+ var result = interpreter.java_Invoke_UsingSignature("eval","(Ljava/lang/String;)Ljava/lang/Object;",code);
64+ replGui.showOutput(result.str());
65+ }
66+ catch(System.Exception ex)
67+ {
68+ ex.log("Execution error");
69+ replGui.showErrorMessage(ex.Message);
70+ }
71+ };
72+ Action<string,string> addCodeSample =
73+ (title, codeSample)=> samplesMenu.add_Button(title,
74+ ()=>{
75+ codeText.set_Text(codeSample);
76+ execute();
77+ });
78+ Func<string> getJni4NetReplCode =
79+ ()=>{
80+ return "return jni4Net.bridgeSetup;".line().line() +
81+ "//O2Ref:jni4net.n-0.8.6.0.dll".line() +
82+ "//O2Ref:{0}".format(jni4Net.type().Assembly.ManifestModule.str());
83+ };
84+
85+
86+ toolStrip.add_DropDown("REPL", "text_x_script".formImage())
87+ .add_Button("REPL Form" , ()=>topPanel.parentForm().script_Me("form"))
88+ .add_Button("REPL Jni4Net" , ()=>jni4Net.script_Me("jni4Net").set_Code(getJni4NetReplCode()))
89+ .add_Button("REPL Jni4Net Assembly" , ()=>jni4Net.type().Assembly.script_Me("assembly"));
90+
91+ toolStrip.add_Button("Open BeanSheel website", "internet_web_browser".formImage(), ()=>"http://www.beanshell.org/".startProcess())
92+ .add_Button("View Jni4Net O2 Blog posts", "internet_web_browser".formImage(), ()=>"http://blog.diniscruz.com/search/label/Jni4Net".startProcess());
93+
94+ //Code samples
95+
96+ addCodeSample("Hello World", "return \"Hello World (from java bean)\";");
97+ addCodeSample("Java Properties", "return java.lang.System.getProperties();");
98+
99+ addCodeSample("Int sums",
100+ @"int a = 12;
101+ return a + 30;");
102+
103+ addCodeSample("Hashtable and date",
104+ @"Hashtable hashtable = new Hashtable();
105+ Date date = new Date();
106+ hashtable.put( ""today"", date );
107+ return hashtable.get(""today"");");
108+
109+
110+ addCodeSample("Create java button",
111+ @"button = new JButton( ""My Button"" );
112+ frame = new JFrame( ""My Frame"" );
113+ frame.getContentPane().add( button, ""Center"" );
114+ frame.pack();
115+ frame.setVisible(true);
116+
117+ return ""You should have a Java button"" +
118+ ""somewhere on your screen"";");
119+
120+
121+ addCodeSample("System.out.println (not working)",
122+ @"java.lang.System.out.println(""Hello Java world!"");
123+ return ""done"";");
124+
125+ samplesMenu.items().first()
126+ .PerformClick();
127+
128+ replGui.Execute_Button.click();
129+ replGui.Output_Panel.splitterDistance(50);
130+
131+ return "done";
132+
133+
134+ //using System.Reflection
135+ //using net.sf.jni4net
136+ //using net.sf.jni4net.jni;
137+ //using java.lang;
138+ //using java.net;
139+ //O2File:API_Jni4Net.cs
140+ //O2Ref:Jni4Net\lib\jni4net.n-0.8.6.0.dll
141+ //O2Embed:java.ico
142+ //O2EmbedTool:Jni4Net
0 commit comments