| MINERVA + Gui + Java Library + Own Library as Standalone and Applet
This example shows
- how to extend MINERVA including GUI with both Java internal classes and your own programs
- how to produce library packages for MINERVA
- how to compile and statically link the extensions
- how to execute this as standalone and applet
- how to handle security exceptions
- how to use 'catch/3'
The declaration of the extension for the Java library is
property.mxt
The declaration of the extension for the own library is
mystuff.mxt
The applet wrapper is
wrap.html
The top level MINERVA source program is
example4.min
Refer to 'Compile', 'Go' and the other files of this directory for details.
Questions? Problems? Feedback? Please let us know!
mailto:support@ifcomputer.com
% MINERVA (c) IF Computer 1996,97
% http://www.ifcomputer.com/MINERVA mailto:support@ifcomputer.com
% file: example1.min
:- package(gui).
:- package(mystuff).
:- package(property).
main(Applet, Args) :-
textArea_create(16, 60, OutputWindow),
textComponent_setEditable(OutputWindow,false),
container_add(Applet, 'Center', OutputWindow),
textArea_getOutputStream(OutputWindow, Output),
set_output(Output),
set_error(Output),
run_add3,
property(Args).
run_add3 :-
write('add3(10,11,12) returned: '),
add3(10,11,12,X),
writeq(X), nl, flush_output.
property(Args) :-
write(Args),nl,flush_output,
p(system_getProperties(_)),
p(system_getProperty('my.parameter',unknownParam,_)),
p(system_getProperty('java.version',_)),
p(system_getProperty('java.vendor',_)),
p(system_getProperty('java.vendor.url',_)),
p(system_getProperty('java.home',_)),
p(system_getProperty('java.class.version',_)),
p(system_getProperty('java.class.path',_)),
p(system_getProperty('os.name',_)),
p(system_getProperty('os.arch',_)),
p(system_getProperty('os.version',_)),
p(system_getProperty('file.separator',_)),
p(system_getProperty('path.separator',_)),
p(system_getProperty('line.separator',_)),
p(system_getProperty('user.name',_)),
p(system_getProperty('user.home',_)),
p(system_getProperty('user.dir',_)),
!.
p(Goal) :-
catch(Goal,AnyError,sorry(Goal,AnyError)),
writeq(Goal), nl, flush_output,
!.
sorry(Goal,AnyError) :-
println(['Oooops: ', quoted(Goal)]),
println(['caused: ', quoted(AnyError)]),
flush_output.
#!/bin/sh
CLASSPATH=.:$MINERVA_HOME:$CLASSPATH
export CLASSPATH
mjavac AddTest.java
minervax -gui -f MinervaGuiExtended -c PackageProperty property
minervax -f Dummy -c PackageMystuff mystuff
mjavac PackageProperty.java
mjavac PackageMystuff.java
rm tmp.java
mv MinervaGuiExtended.java tmp.java
minervac extend
minerva -l extend tmp.java MinervaGuiExtended.java
rm tmp.java
mjavac MinervaGuiExtended.java
cp -p MinervaGuiExtended.class $MINERVA_HOME/userclasses
cp -p PackageProperty.class $MINERVA_HOME/userclasses
cp -p PackageMystuff.class $MINERVA_HOME/userclasses
cp -p add3.class $MINERVA_HOME/userclasses
minervac example4
% MINERVA (c) IF Computer 1996,97
% http://www.ifcomputer.com/MINERVA mailto:support@ifcomputer.com
% add3(+Integer,+Integer,+Integer,-Integer) <-
java_predicates('AddTest', [
add3 = add3(int,int,int)
]).
// add3 adds three integers and returns the result
public class AddTest {
public static int add3(int a, int b, int c)
{ return a + b + c; }
}
% MINERVA (c) IF Computer 1996,97
% http://www.ifcomputer.com/MINERVA mailto:support@ifcomputer.com
% PropertyExtension--------------------------------------------
java_predicates('java.util.Properties', [
create_properties = 'Properties',
properties_getProperty = getProperty(string,string),
properties_getProperty = getProperty(string),
properties_propertyNames = propertyNames,
system_getProperty = getProperty(string,string)
]).
java_predicates('java.lang.System', [
system_getProperty = getProperty(string),
system_getProperties = getProperties
]).
|