------------------------------------------------------------------------------ JShape 2.19 Copyright 2000 from JShape Software ------------------------------------------------------------------------------ *** *** This file does not contain the complete updated information about JShape, *** please refer to http://www.jshape.com for the complete updated information. *** 1. How to use JShape 1.1 : System requirements 1.2 : Install JShape on your WWW server 1.3 : Write your own HTML files 1.4 : Customize JShape 1.5 : Link to the attribute information 1.6 : JShape action buttons 1.7 : JShape online commands 1.8 : Compressed shapefile 2. JShape External Interface 2.1 : JShape External Interface Model 2.2 : JShape External Interface Programming Environment 2.3 : Java/JShape Coordination Systems 2.4 : Basic JShape Class Objects 2.5 : JShape API 3. JShape in international languages 4. User Buttons 5. Thematic Map Functions 6. JShape Script 7. Encrypted Shapefiles 8. JShape Application 9. Invoke Menu in MapLegendMode or MapWindowOnly Modes A. JSFrame Wrapper B. Where to get JShape ------------------------------------------------------------------------------ 1. How to use JShape ? ------------------------------------------------------------------------------ ------------------------------------------------------------------------------ 1.1 System Requirements : ------------------------------------------------------------------------------ 1. At least, you need to have a WWW server which you can load your HTML files, shapefiles and JShape applets onto it. 2. A WWW browser which support Java VM (Virtual Machine). 3. A basic editor (like Notepad.exe). ------------------------------------------------------------------------------ 1.2 Install JShape on your WWW server ------------------------------------------------------------------------------ 1. Unzip JSHAPE.ZIP 2. Copy all JShape applets to (a) or (b). (a) A special JShape directory which can be accessed through CODEBASE="..." option. (b) The directory which you put your HTML files and shapefiles. 3. Usually, you need to put the HTML files with the related shapefiles and the attribute information in the same directory. (*** Note ***) For advanced WWW developers : JShape can be packed a ZIP file for fast downloading. ------------------------------------------------------------------------------ 1.3 Write your own HTML files ------------------------------------------------------------------------------ 1. Before you start publishing your shapefiles through JShape, you need to have the basic knowledge about HTML language. 2. Embed JShape applets into your HTML files. For examples : (a) . All JShape class files are copied to /jshape directory. . Display the shapefile "river.shp" (Arc feature) in blue color. (b) . All JShape class files are copied to the same directory contained the related HTML files an shapefiles. . Display the shapefile "river.shp" (Arc feature) in blue color. (c) . All JShape class files are copied to /jshape directory. . Display the shapefile "river.shp" (Arc feature) in blue color. . Display the shapefile "state.shp" (Polygon feature) in red frame and pink background. . The river features are on top of the state features. (d) . All JShape class files are copied to /jshape directory. . Display the shapefile "city.shp" (Point feature) in green color. . Display the shapefile "river.shp" (Arc feature) in blue color. . Display the shapefile "state.shp" (Polygon feature) in red frame and pink background. . The city features are on top of the river features, and the river features are on top of the state features. (e) . Instead of downloading dozens of JShape class files separately, users can specify the archive file jshape.zip for one fast downloading. ------------------------------------------------------------------------------ 1.4 Customize JShape ------------------------------------------------------------------------------ There are two groups of parameters allowing users to customize JShape : [Project Parameters] 01) project : Allow users to specify the project name. For example : 02) jshapebase : Allow users to specify the location of shapefiles and attribute information files. Usually, HTML files, shapefiles and attribute information files are in the same directory, however this parameter allows you to separate them. *** Parameter jshapebase must be a complete URL path. *** For Example : 03) scale : Allow users to change the resolution of spatial data. The default value is 1000. If the full extent box of your spatial data is too small, increase this value. If the full extent box of your spatial data is too large, decrease this value. For Example : 04) status : Allow users to adjust the size of the status window. If the value of status is 0, the status window will be hide. The default value is 3. For Example : 05) scolor : Allow users to change the selection color. The default selection color is yellow. You can specify colors in two different ways. (a) Pre-defined color : black, blue, cyan, darkGray, gray, green, lightGray, magenta, orange, pink, red, white, yellow, brown, violet, gold and transparent (only for the background color of polygon features). (b) RGB valued color : RRGGBB value is in the hex-decimal format. For Examples : 06) count : allow users to specify how many layers (or shapefiles) are wanted to display. For Example : 07) list : allow users to specify which layers (or shapefiles) to be loaded into JShape. When using this parameter, there is no need to use "count" parameter anymore. For Example : The above parameter specifies JShape only loads layers 1 and 3 (layer 1 is on the top of layer 3). 08) zoomxmin, zoomymin, zoomxmax, zoomymax : these four parameters allow users to Pre-Zoom JShape to the area users specified at the startup time. For Example : 09) external : the class filename of JShape External Interface module. The default class filename is "external". *** Java class filename is case-sensitive *** For Example : 10) delimiter : the delimiter used to separate fields in the attribute information file. The default delimiter is "@". For Example : 11) mbcolor : allow users to specify the background color of the map window. The default map background color is light gray. For Examples : 12) notes : if jshape works inside Lotus Notes environment, this parameter need to be set "1" For Example : 13) actlayer : allow users to set the active focus layer. The default actlayer value is 1. For Example : 14) initfile : specify JShape to load the applet parameters from an external initial parameter file. For Example : 15) cmdfile : specify JShape to load the user menu command file. For Example : 16) UnzoomRatio : the extra zoom-out ratio for the unzoom function For Example : 17) MapWindowOnly : the switch to turn on Map Window Only Mode For Example : 18) MapLegendMode : the switch to turn on MapLegend Mode, which JShape only display the Map and Lengend windows on the screen. For Example : 19) LegendWindowWidth : set the width of the legend window. For Example : 20) UseCodeBase : JShape uses [CodeBase] directory to load its documents and GIS data. For Example : 21) MaxZoomInRatio : set the ratio to control the zoomin detals. For Example : [Layer Parameters] 01) layer? : allow users to specify the shapefile or image file. "?" indicates the layer number. If a file ends with ".gif" or ".jpg", this file is an image file. For Example : ... ... ... 02) info? : allow users to specify the attribute information file. "?" indicates the layer number. For Example : ... ... ... 03) title? : allow users to specify the title of a layer. "?" indicates the layer number. For Example : 04) fcolor? : allow users to specify the (foreground) color for the point and arc feature, or the frame color of the polygon feature. "?" indicates the layer number. For Examples : 05) bcolor? : allow users to specify the fill (background) color of the polygon feature. "?" indicates the layer number. For Examples : 06) size? : allow users to specify the symbol size. "?" indicates the layer number. The default value is 1. For Example : 07) xmin?, ymin?, xmax?, ymax? : If the layer file is an image background file, users must specify its extent box coordinations. "?" indicates the layer number. max (xmax,ymax) +----------------* | GIF/JPEG Image | | Extent | *----------------+ min (xmin,ymin) For Example : 08) lcolor? : allow users to specify the label color of the current layer, "?" indicates the layer number. The default label color is black. For Examples : 09) label? : allow users to set the label information of the current layer, "?" indicates the layer number. The default label information is OFF. For Examples : 10) enable? : allow users to enable/disable the specified layer status. "?" indicates the layer number. The default layer status is ON. For Examples : 11) delay? : allow users to delay loading the specified layer. When the delay loading is set to ON, the speified layer will be disabled, and the GIS data will not be loaded until this layer is enabled by users. "?" indicates the layer number. The default layer status is OFF. For Examples : 12) threshold? : allow users to specify the threshold area factor. The threshold factor must be an integer greater than 1. For Examples : The above threshold specifies JShape "Do not dynamically load layer 1 data, if the current view extent is larger than 1/64 full view extent.". ------------------------------------------------------------------------------ 1.5 Link to the attribute information ------------------------------------------------------------------------------ There are multiple feature records contained in a shapefile. When a feature is selected or identified, a feature record number is report to JShape. JShape uses this record number to link with the external attribute information file. The attribute information is contained in a plain ASCII text file. Each line of this file stands for one attribute information record. There should be an one-to-one relationship between the shapefile and the attribute information file. *** Starts from JShape 2.1, the attribute information can be also retrieved from a dBase (.dbf) file. *** There are three ways to prepare the attribute information files : (a) Use the dBase file from the shapefile suite. (*NOTE*) ESRI's Shapefile suite contains three parts : shape.shp : feature records shape.shx : spatial index shape.dbf : dBase file contains ID, Area, length, attribute & misc. information. Sometimes, it's too big/slow to transfer through the Internet. (b) Export the attribute records from a shapefile dBase file to a text file. (b) Use [Identify] action button from JShape to identify the feature record number, and build the attribute information file manually. ------------------------------------------------------------------------------ 1.6 JShape action buttons ------------------------------------------------------------------------------ There are several action buttons in JShape panel allows users to manipulate the spatial data. 1. [UnZoom] : Display the map in the full extent view. 2. [ZoomIn] : Zoom in the map. 3. [ZoomOut] : Zoom out the map. 4. [Pan] : Pan (move) the map. 5. [Identify] : Identify the attribute information on the current focused layer. The identified attribute information is shown in the status window. The focused layer can be changed through the legend window by clicking the interested layer you want. 6. [Select] : Select the spatial features of the current focused layer. The identified attribute information is shown in the status window. The focused layer can be changed through the legend window by clicking the interested layer you want. (*** Note ***) After processed [Select] function, JShape displays the selection box information (xmin, ymin, xmax & ymax) in the status window. Users can use these coordination information for the Pre-Zoom or the Image-Background functions. 7. [Clear] : Clear the selected features, labels and the status window buffer. 8. [Execute] : Execute the online command entered in the command window. Next section will explain this in the details. 9. [Query] : Query the attribute information on the current focused layer with the query criterion entered in the command window. The focused layer can be changed through the legend window by clicking the interested layer you want. JShape uses the partial string match method to search the attribute information. For Example : There are three attribute records : Park Arc nomatch If the query criterion is "ar", only "Park" and "Arc" will be matched. ------------------------------------------------------------------------------ 1.7 JShape online commands ------------------------------------------------------------------------------ Users can enter the online command in JShape command window, and then press [Execute] button to execute the online command. The following commands are currently supported by JShape. 1. help : Help command. 2. count : Report the number of features on the current focused layer. 3. extent : Report the map extent information. 4. fcolor= : Change the foreground color of the features on the current focused layer. For examples : fcolor=red or fcolor=FF00FF 5. bcolor= : Change the background color of the features on the current focused layer. For examples : bcolor=red or bcolor=FF00FF 6. lcolor= : Change the label color on the current focused layer. For examples : lcolor=red or lcolor=FF00FF 7. size= : Change the symbol size of the features on the current focused layer. For example : size=5 8. scolor= : Change the selection color of the features on the current focused layer. For examples : scolor=red or scolor=FF00FF *** Note *** JShape allows multiple selection colors co-existing on the same focused layer. With the different selection colors and the different query criteria, WWW end users can achieve the thematic map effects. For Example : On a road layer, users can do the following things : (a) [Execute] : scolor=red (b) [Query] : highway 101 The selected "highway 101" features are displayed in red. (c) [Execute] : scolor=brown (d) [Query] : highway 5 The selected "highway 5" features are displayed in brown, and the selected "highway 101" features are still displayed in red. 9. ssize= : Change the symbol size of the selected features on the current focused layer. For example : ssize=5 A. export : Export the selected attribute information (from Query or Select functions) of the current focused layer. B. label=[ON|OFF] : Set the label information ON or OFF on the current focused layer. For exmaple : label=OFF C. label : Set the label information ON on the current focused layer. D. lfield= : Set the label attribute field number on the current focused layer. For exmaple : lfield=2 E. mbcolor= : Change the background color of the map window. For examples : bcolor=red or bcolor=FF00FF ------------------------------------------------------------------------------ 1.8 Compressed shapefile ------------------------------------------------------------------------------ Start from version 1.1, JShape supports the compressed shapefile (.csp) format. Users need to use FShape to convert their normal shapefiles to the compressed shapefiles. The compressed shapefile usually is 3-4 times smaller than its original shapefile. This means the compressed shapefile can be transfered 3-4 times faster on the Internet. JShape treats the compressed shapefile the same way as it treats the normal shapefile. For example, you have a compressed shapefile "river.csp", and you want to publish it to WWW. Here is the HTML script for that. ------------------------------------------------------------------------------ 2. JShape External Interface ------------------------------------------------------------------------------ ------------------------------------------------------------------------------ 2.1 JShape External Interface Model ------------------------------------------------------------------------------ JShape External Interface is the interface allows users to implement their customized rountines. The basic protocol of JShape External Interface Model is following : (1) At JShape startup time, JShape detect whether there is "external" (or class file specified in ) class file existing. If "external" class file exists, JShape loads/links it into JShape's main codes. If "external" class file does not exist, JShape just does its normal activities and the rest steps are skipped. (2) If "external" class file exists and the following EVENTs happened, JShape will call the dispatch routine in the "external" class. * JShape's init() is called, after the user interface is created. * JShape's start() is called, after the layer information is loaded. * JShape's stop() is called, before JShape applet is stoped by the WWW browser. * JShape map window's paint() is called. * JShape [Execute] button is pressed and the specified online command is not the JShape default online command. (This means the JShape default online commands cab not be overwritten.) * JShape [Query] button is pressed. (This mean the JShape default query function can be overwritten.) * JShape map window's mouse activities. (3) In "external" class, there must be a dispatch routine to receive command and argument parameters from JShape. The syntax of dispath routine is following : public int dispatch(String command,String argument) (4) The following is the simplest external routine which does nothing. /* ** source code : external.java */ /* ** external module must inherit from Link object */ class external extends Link { /* ** dispath routine */ public int dispatch(String command,String argument) { /* ** [init0] : triggered at the very beginning of JShape, ** most JShape APIs are not available at this time. ** return : don't care */ // if (command.equals("init0")) // { // return 0; // }; /* ** [init] : triggered when JShape applet runs init() ** return : don't care */ // if (command.equals("init")) // { // jshape.ShowStatus("external : [init]\n"); // }; /* ** [start] : triggered when JShape applet runs start() ** return : don't care */ // if (command.equals("start")) // { // jshape.ShowStatus("external : [start]\n"); // }; /* ** [stop] : triggered when JShape applet runs stop() ** return : don't care */ // if (command.equals("stop")) // { // jshape.ShowStatus("external : [stop]\n"); // }; /* ** [destroy] : triggered when JShape applet runs destroy() ** return : don't care */ // if (command.equals("destroy")) // { // jshape.ShowStatus("external : [destroy]\n"); // }; /* ** [paint] : triggered when JShape applet runs paint() ** return : don't care */ // if (command.equals("paint")) // { // jshape.ShowStatus("external : [paint]\n"); // }; /* ** [execute] : triggered when "execute" button pressed ** online command is passed through "argument" ** return 0 : do not process external online command ** return 1 : process external online command */ // if (command.equals("execute")) // { // jshape.ShowStatus("external : [execute], online command : ["+argument+"]\n"); // }; /* ** [query] : triggered when "query" button pressed ** query criteria is passed through "argument" ** return 0 : do not process external query ** return 1 : process external query */ // if (command.equals("query")) // { // jshape.ShowStatus("external : [query], criteria : ["+argument+"]\n"); // }; /* ** [identify] : triggered when "identify" button pressed ** attribute record string is passed through "argument" ** return 0 : do not process external identify ** return 1 : process external identify */ // if (command.equals("identify")) // { // jshape.ShowStatus("external : [identify], attribute : ["+argument+"]\n"); // }; /* ** [mouseup] : triggered when "mouse-up" in the map window ** return : don't care */ // if (command.equals("mouseup")) // { // jshape.ShowStatus("external : [mouseup]\n"); // }; /* ** [mousedown] : triggered when "mouse-down" in the map window ** return : don't care */ // if (command.equals("mousedown")) // { // jshape.ShowStatus("external : [mousedown]\n"); // }; /* ** [mousedrag] : triggered when "mouse-drag" in the map window ** return : don't care */ // if (command.equals("mousedrag")) // { // jshape.ShowStatus("external : [mousedrag]\n"); // }; /* ** [mousemove] : triggered when "mouse-move" in the map window ** return : don't care */ // if (command.equals("mousemove")) // { // jshape.ShowStatus("external : [mousemove]\n"); // }; return(0); } } (5) Execute the following command to compile "external" routine. javac external.java ------------------------------------------------------------------------------ 2.2 JShape External Interface Programming Environment ------------------------------------------------------------------------------ JShape 1.x is implemented in JDK 1.0.2. To avoid unexpected problems, JShape External Interface routines for JShape 1.x need to be implemented in JDK 1.0.2 (or equivalent). JShape 2.x is implemented in JDK 1.1+. To avoid unexpected problems, JShape External Interface routines for JShape 2.x need to be implemented in JDK 1.1+. (or equivalent). Before start implementing JShape "external" routines, users need to unzip JShape.zip and copy JShape Java class files to (1) the directory which is in CLASSPATH. or (2) the directory which is used to implement "external" routines. ------------------------------------------------------------------------------ 2.3 Java/JShape Coordination Systems ------------------------------------------------------------------------------ During the implementation of JShape "external" routines, users may need to use JShape APIs to convert the spatial data to/from between Java/JShape coordination systems. Here are the differences between these two systems. (1) Java Screen Coordination System : (integer based) (0,0) *------------------------------------+> | | min (xmin,ymin) | *----------------+ | | | | | | | +----------------* | max (xmax,ymax) | + V Java Screen Coordination System is used to draw graphics in JShape map window. (2) JShape Map Coordination System : (double precision based) ^ + | | max (xmax,ymax) | +----------------* | | | | | | | *----------------+ | min (xmin,ymin) | *------------------------------------+> (0,0) JShape Map Coordination System is used to store feature data and do spatial calculation in JShape. ------------------------------------------------------------------------------ 2.4 Basic JShape Class Objects ------------------------------------------------------------------------------ There are two basic class objects may pass between your "external" routine and JShape. class DPoint extends Object { public double dx; // double precision x-coordination value public double dy; // double precision y-coordination value public int x; // integer value of dx public int y; // integer value of dy public DPoint(double dx,double dy); public DPoint(int x,int y); } class DRectangle extends Object { public DPoint min; // min point public DPoint max; // max point public double dwidth; // double precision width value of DRectangle public double dheight; // double precision height value of DRectangle public int width; // integer value of dwidth public int height; // integer value of dheight public DRectangle(DPoint min,DPoint max); } For Example : DPoint dp1=new DPoint(123.456,0.001); DPoint dp2=new DPoint(200,1); DRectangle drect=new DRectangle(dp1,dp2); System.out.println("drect.min.dx : "+drect.min.dx); // output : 123.456 System.out.println("drect.min.x : "+drect.min.x); // output : 123 System.out.println("drect.dheight : "+drect.dheight); // output : 0.999 System.out.println("drect.height : "+drect.height); // output : 0 ------------------------------------------------------------------------------ 2.5 JShape API ------------------------------------------------------------------------------ Please refer to http://www.jshape.com/api.htm for the complete JShape API descriptions. ------------------------------------------------------------------------------ 3 JShape in international languages ------------------------------------------------------------------------------ Inside JSHAPE.ZIP, there is a file "Language.java" contains the text strings used in JShape. Users can modify this file, compile it, and replace the original "Language.class" Java class file. Starting from JShape 2.15, the internation language implementations can be solved through modifications of JShape project parameters. Please refer to http://www.jshape.com/workshop.htm for details. ------------------------------------------------------------------------------ 4. User Buttons ------------------------------------------------------------------------------ Inside Language.java (comes with JSHAPE.ZIP), there are five variables ButtonUser1Text ... ButtonUser5Text. Their initial values are blank. If you set the non-blank value into these variables, JShape will dynamically create user buttons for you. For example : If you set the value of ButtonUser1Text to "Restaurant Info", JShape will proceed the following things : (1) Create a "Restaurant Info" button. (2) When the "Restaurant Info" button is pressed, JShape will send "user1" dispatch command to JShape external routine. The syntax of "user1" dispatch command is following : class external extends Link { public int dispatch(String command,String argument) { /* ** [user1] : triggered when "User1 Button" is pressed ** argument : contains the state of the user button. ** "0" means the CLEAR state, and "1" means the SET state ** return : don't care */ if (command.equals("user1")) { jshape.ShowStatus("external : [user1], state : "+argument+"\n"); }; return (0); } } Starting from JShape 2.15, the user buttons can be bound to JShape Menu Scripts directly without any above Java programming. Please refer to http://www.jshape.com/workshop.htm for details. ------------------------------------------------------------------------------ 5. Thematic Map Functions ------------------------------------------------------------------------------ 1. Setup : A. Specify the thematic map information file in JShape Applet. For Examples : or B. Set the thematic map information [ON|OFF], at the JShape startup time. The default value is OFF. For Examples : or 2. Thematic Map Information File : The Thematic Map Infomation File is an ASCII-TEXT file contains the following information : (a) : Attribute Field Number : Specify the attribute field from the attribute information file, which is use as thematic map display criteria. (b) : Thematic Map Entries : The definition of Thematic Map Entry is the following : [Description],[Expression],[ForgroundColor],[BackgroundColor],[SymbolSize] * The [Description] is used to display the information on the JShape legend window. * The [Expression] is used by JShape to evaluate the Thematic Map information. The definition of [Expression] is the following : Operator1 Value1 {Relation Operator2 Value2} * The "Relation", "Operator2" and "Value2" fields can be optional. * The valid "Operator"s can be : eq : same string !eq : different string like : similar string = : same number != : different number > : greater than number >= : greater-equal than number < : less than number <= : less-equal than number default : return "true" without any comparisons, no value string required. * The valid "Relation"s can be : and : AND relation or : OR relation 3. Thematic Map Information File Example 1 : # Thematic Field 4 # Thematic Definitions # [Description],[Expression],[ForgroundColor],[BackgroundColor],[SymbolSize] >= 3.0 cfs,>= 3.0,null,null,14 >= 2.0 cfs,>= 2.0 and < 3.0,null,null,12 >= 1.0 cfs,>= 1.0 and < 2.0,null,null,10 >= 0.5 cfs,>= 0.5 and < 1.0,null,null,8 < 0.5 cfs,< 0.5 ,null,null,6 4. Thematic Map Information File Example 2 : # Thematic Field 1 # Thematic Definitions # [Description],[Expression],[ForgroundColor],[BackgroundColor],[SymbolSize] grape,eq grape,null,cc3299,0 tomato,eq tomato,null,magenta,0 corn,eq corn,null,cyan,0 citrus,eq citrus,null,orange,0 avocado,eq avocado,null,fffbf0,0 forest,eq forest,null,green,0 ------------------------------------------------------------------------------ 6. JShape Script ------------------------------------------------------------------------------ JShape Script is the script which allows users to manipulate JShape features & layers, complicated queries, and generate customized reports without any Java programming efforts. The JShape script contains a sequence of script command. The script commands are the superset of JShape online commands. All script commands can be entered in the command window and executed by pressing Execute button. Usually JShape Script is invoked by User Menu Commands. Please refer to http://www.jshape.com/script.htm for the complete discussion of JShape Script. ------------------------------------------------------------------------------ 7. Encrypted Shapefiles ------------------------------------------------------------------------------ Encrypted Compressed Shapefile (.ecs) and Encrypted Grid Shapefile (.egd/.egs) are used to protect important JShape GIS datasets not copied or downloaded by remote users for other purposes. For example, if you want to publish an important GIS data file "value.shp" to internet, but you don't want the remote users to get a copy of it. Here is the solution for this problem : 1. Execute the following commands to generate Encrypted Compressed Shapefile or Encrypted Grid Shapefile : (a) fshape value1.shp compress key:http://www.my.com to generate value1.ecp, which is encrypted with the key "http://www.my.com". (b) fshape value2.shp grid:10:10 key:http://www.my.com to generate value2.egd and a set of .egp files, which are encrypted with the key "http://www.my.com". 2. In JShape applet HTML file, specify the following information : Since the encrypted shaprefiles are specified, JShape client will use the current HTTP URL as the key to decrypt the input files value1.ecp and value2.egd. If the current HTTP URL is other than http://www.my.com, JShape client can not process the input encrypted shapefiles. Notes : 1. All encryption key are case sensitive. 2. JShape supports the smart URL matching. For Examples : (a) If you create a encrypted compressed shapefile value.ecp with the key "http://www.my.com", then JShape has no problem to access it from "http://www.my.com/gis/value.ecp" or "http://www.my.com/cad/value.ecp". (b) If you create a encrypted compressed shapefile value.ecp with the key "http://www.my.com/gis", then JShape has no problem to access it from "http://www.my.com/gis/value.ecp", but JShape can not access it from "http://www.my.com/cad/value.ecp". ------------------------------------------------------------------------------ 8. JShape Application ------------------------------------------------------------------------------ Starting from JShape 2.02, JShape supports Java applications. The syntax of JShape application is : java jshape project-file [width] [height] The project-file is the parameter file used in . Here is the sample of a simple project file : # project parameters project=JShape Project unzoomratio=1 mbcolor=black status=4 count=3 # layer1 parameters layer1=calcity.shp info1=calcity.txt title1=City fcolor1=green lcolor1=green size1=4 # layer2 parameters layer2=calriver.shp info2=calriver.txt title2=River fcolor2=blue lcolor2=blue # layer3 parameters layer3=cal.shp info3=cal.txt title3=County fcolor3=red lcolor3=red bcolor3=transparent ------------------------------------------------------------------------------ 9. Invoke Menu in MapLegendMode or MapWindowOnly Modes ------------------------------------------------------------------------------ In MapLegendMode or MapWindowOnly modes, users can Right-Click mouse button to get the JShape menu. ------------------------------------------------------------------------------ A. JSFrame Wrapper ------------------------------------------------------------------------------ JSFrame (jsframe.class) is a wrapper Java class for JShape. Instead of calling JShape (jshape.class), users can call JSFrame directly. Here is an example of JSFrame : ... regular JShape parameters ... Parameter "framesize" defines the width of the frame border. Parameter "framecolor" defines the color of the frame border. ------------------------------------------------------------------------------ B. Where to get JShape ------------------------------------------------------------------------------ * JShape clients are free for Web GIS developers. Please visit JShape homepage http://www.jshape.com for details.