[Monodevelop-patches-list] r2549 - in trunk/MonoDevelop/Extras/JavaBinding: . Gui Project templates

Lluis Sanchez <lluis@ximian.com> lluis at mono-cvs.ximian.com
Fri May 20 10:37:15 EDT 2005


Author: lluis
Date: 2005-05-20 10:37:15 -0400 (Fri, 20 May 2005)
New Revision: 2549

Added:
   trunk/MonoDevelop/Extras/JavaBinding/Gui/GlobalOptionsPanel.cs
   trunk/MonoDevelop/Extras/JavaBinding/Java.glade
   trunk/MonoDevelop/Extras/JavaBinding/templates/IkvmLibraryProject.xpt.xml
Modified:
   trunk/MonoDevelop/Extras/JavaBinding/ChangeLog
   trunk/MonoDevelop/Extras/JavaBinding/Gui/ProjectConfigurationPropertyPanel.cs
   trunk/MonoDevelop/Extras/JavaBinding/JavaBinding.addin.xml
   trunk/MonoDevelop/Extras/JavaBinding/JavaBindingCompilerServices.cs
   trunk/MonoDevelop/Extras/JavaBinding/JavaLanguageBinding.cs
   trunk/MonoDevelop/Extras/JavaBinding/Makefile.am
   trunk/MonoDevelop/Extras/JavaBinding/Project/JavaCompilerParameters.cs
   trunk/MonoDevelop/Extras/JavaBinding/templates/IkvmConsoleApplicationProject.xpt.xml
   trunk/MonoDevelop/Extras/JavaBinding/templates/IkvmGladeApplicationProject.xpt.xml
   trunk/MonoDevelop/Extras/JavaBinding/templates/IkvmGnomeApplicationProject.xpt.xml
   trunk/MonoDevelop/Extras/JavaBinding/templates/IkvmGtkApplicationProject.xpt.xml
Log:
2005-05-20  Lluis Sanchez Gual  <lluis at novell.com>

	* JavaBindingCompilerServices.cs: Automatically generate wrappers
	for referenced assemblies. Improved error parsing. Many fixes.
	* ProjectConfigurationPropertyPanel.cs: Moved to Glade.
	* JavaLanguageBinding.cs: Added some global configuration properties.
	* JavaCompilerParameters.cs: Added missing DefineSymbols property.
	* JavaBinding.addin.xml: Added new configuration dialogs and a new
	template.
	* Makefile.am: Added a new template and a glade file.
	* templates/IkvmGtkApplicationProject.xpt.xml:
	* templates/IkvmGladeApplicationProject.xpt.xml:
	* templates/IkvmGnomeApplicationProject.xpt.xml: Added GTK references
	in the GTK# projects.
	* templates/IkvmConsoleApplicationProject.xpt.xml: Removed hard-coded
	classpath.
	* Java.glade: New glade file for java options.
	* Gui/GlobalOptionsPanel.cs: New java options panel.
	* templates/IkvmLibraryProject.xpt.xml: New project template.



Modified: trunk/MonoDevelop/Extras/JavaBinding/ChangeLog
===================================================================
--- trunk/MonoDevelop/Extras/JavaBinding/ChangeLog	2005-05-20 14:28:56 UTC (rev 2548)
+++ trunk/MonoDevelop/Extras/JavaBinding/ChangeLog	2005-05-20 14:37:15 UTC (rev 2549)
@@ -1,3 +1,23 @@
+2005-05-20  Lluis Sanchez Gual  <lluis at novell.com>
+
+	* JavaBindingCompilerServices.cs: Automatically generate wrappers
+	for referenced assemblies. Improved error parsing. Many fixes.
+	* ProjectConfigurationPropertyPanel.cs: Moved to Glade.
+	* JavaLanguageBinding.cs: Added some global configuration properties.
+	* JavaCompilerParameters.cs: Added missing DefineSymbols property.
+	* JavaBinding.addin.xml: Added new configuration dialogs and a new
+	template.
+	* Makefile.am: Added a new template and a glade file.
+	* templates/IkvmGtkApplicationProject.xpt.xml:
+	* templates/IkvmGladeApplicationProject.xpt.xml:
+	* templates/IkvmGnomeApplicationProject.xpt.xml: Added GTK references
+	in the GTK# projects.
+	* templates/IkvmConsoleApplicationProject.xpt.xml: Removed hard-coded
+	classpath.
+	* Java.glade: New glade file for java options.
+	* Gui/GlobalOptionsPanel.cs: New java options panel.
+	* templates/IkvmLibraryProject.xpt.xml: New project template.
+
 2005-04-17  John Luke  <john.luke at gmail.com>
 
 	* Makefile.am: fix distcheck

Added: trunk/MonoDevelop/Extras/JavaBinding/Gui/GlobalOptionsPanel.cs
===================================================================
--- trunk/MonoDevelop/Extras/JavaBinding/Gui/GlobalOptionsPanel.cs	2005-05-20 14:28:56 UTC (rev 2548)
+++ trunk/MonoDevelop/Extras/JavaBinding/Gui/GlobalOptionsPanel.cs	2005-05-20 14:37:15 UTC (rev 2549)
@@ -0,0 +1,71 @@
+
+using System;
+using Gtk;
+
+using MonoDevelop.Internal.Project;
+using MonoDevelop.Internal.ExternalTool;
+using MonoDevelop.Gui.Dialogs;
+using MonoDevelop.Gui.Widgets;
+using MonoDevelop.Services;
+using MonoDevelop.Core.Services;
+using MonoDevelop.Core.Properties;
+using MonoDevelop.Core.AddIns.Codons;
+
+namespace JavaBinding
+{
+	public class GlobalOptionsPanelPanel : AbstractOptionPanel
+	{
+		class GlobalOptionsPanelWidget : GladeWidgetExtract 
+		{
+			//
+			// Gtk Controls	
+			//
+			[Glade.Widget] Gnome.FileEntry ikvmPathEntry;
+			[Glade.Widget] Entry compilerPathEntry;
+			[Glade.Widget] Entry classpathEntry;
+			[Glade.Widget] ComboBox compilerCombo;
+			
+			// compiler chooser
+			
+ 			public GlobalOptionsPanelWidget () : base ("Java.glade", "GlobalOptionsPanel")
+ 			{
+				ListStore store = new ListStore (typeof (string));
+				store.AppendValues (GettextCatalog.GetString ("Javac"));
+				store.AppendValues (GettextCatalog.GetString ("Gcj"));
+				compilerCombo.Model = store;
+				CellRendererText cr = new CellRendererText ();
+				compilerCombo.PackStart (cr, true);
+				compilerCombo.AddAttribute (cr, "text", 0);
+				compilerCombo.Active = (int) JavaLanguageBinding.Properties.CompilerType;
+				
+				ikvmPathEntry.Filename = JavaLanguageBinding.Properties.IkvmPath;
+				compilerPathEntry.Text = JavaLanguageBinding.Properties.CompilerCommand;
+				classpathEntry.Text = JavaLanguageBinding.Properties.Classpath;
+			}
+			
+			public bool Store ()
+			{
+				JavaLanguageBinding.Properties.IkvmPath = ikvmPathEntry.Filename;
+				JavaLanguageBinding.Properties.CompilerCommand = compilerPathEntry.Text;
+				JavaLanguageBinding.Properties.Classpath = classpathEntry.Text;
+				
+				JavaLanguageBinding.Properties.CompilerType = (JavaCompiler) compilerCombo.Active;
+				return true;
+			}
+		}
+
+		GlobalOptionsPanelWidget widget;
+		
+		public override void LoadPanelContents()
+		{
+			Add (widget = new  GlobalOptionsPanelWidget ());
+		}
+		
+		public override bool StorePanelContents()
+		{
+			bool result = true;
+			result = widget.Store ();
+ 			return result;
+		}
+	}
+}

Modified: trunk/MonoDevelop/Extras/JavaBinding/Gui/ProjectConfigurationPropertyPanel.cs
===================================================================
--- trunk/MonoDevelop/Extras/JavaBinding/Gui/ProjectConfigurationPropertyPanel.cs	2005-05-20 14:28:56 UTC (rev 2548)
+++ trunk/MonoDevelop/Extras/JavaBinding/Gui/ProjectConfigurationPropertyPanel.cs	2005-05-20 14:37:15 UTC (rev 2549)
@@ -21,159 +21,108 @@
 {
 	public class ProjectConfigurationPropertyPanel : AbstractOptionPanel
 	{
-		private Label runtimeLabel = new Label ();
-		private Label labelWarnings = new Label ();
-		private Label labelOutput = new Label ();
-		private Label titleLabel = new Label ();
-		private Label labelCompiler = new Label ();
-		private Label labelClasspath = new Label ();
-		private Label labelMainClass = new Label ();
-
-		private Button browseButton;
-		
-		private CheckButton checkDebug = new CheckButton (GettextCatalog.GetString ("Enable debug"));
-		private CheckButton checkDeprecation = new CheckButton (GettextCatalog.GetString ("Deprecated"));
-		private CheckButton checkOptimize = new CheckButton (GettextCatalog.GetString ("Enable optimizations"));
-		private CheckButton checkWarnings = new CheckButton (GettextCatalog.GetString ("Generate Warnings"));
-
-		// compiler chooser
-		private RadioButton javac = new RadioButton ("javac");
-		private RadioButton gcj;
-
-		private Entry outputAssembly = new Entry ();
-		private Entry outputDirectory = new Entry ();
-		private Entry compilerPath = new Entry ();
-		private Entry classPath = new Entry ();
-		private Entry mainClass = new Entry ();
-		
-		JavaCompilerParameters compilerParameters = null;
-		DotNetProjectConfiguration configuration;
-		
-		public override bool ReceiveDialogMessage(DialogMessage message)
+		class CodeGenerationPanelWidget : GladeWidgetExtract 
 		{
-			if (message == DialogMessage.OK) {
+			//
+			// Gtk Controls	
+			//
+			[Glade.Widget] Entry symbolsEntry;
+			[Glade.Widget] Entry mainClassEntry;
+			[Glade.Widget] Entry compilerEntry;
+			[Glade.Widget] Entry classPathEntry;
+			[Glade.Widget] ComboBox compileTargetCombo;
+			[Glade.Widget] CheckButton generateWarningsCheckButton;
+			[Glade.Widget] CheckButton deprecationCheckButton;
+			[Glade.Widget] CheckButton enableOptimizationCheckButton;
+			[Glade.Widget] CheckButton warningsAsErrorsCheckButton;
+			[Glade.Widget] CheckButton generateDebugInformationCheckButton;
+			[Glade.Widget] RadioButton compilerGcjButton;
+			[Glade.Widget] RadioButton compilerJavacButton;
+			
+			// compiler chooser
+			
+			JavaCompilerParameters compilerParameters = null;
+			DotNetProjectConfiguration configuration;
+			
+ 			public CodeGenerationPanelWidget (IProperties CustomizationObject) : base ("Java.glade", "CodeGenerationPanel")
+ 			{	
+				configuration = (DotNetProjectConfiguration)((IProperties)CustomizationObject).GetProperty("Config");
+				compilerParameters = (JavaCompilerParameters) configuration.CompilationParameters;
+				
+				ListStore store = new ListStore (typeof (string));
+				store.AppendValues (GettextCatalog.GetString ("Executable"));
+				store.AppendValues (GettextCatalog.GetString ("Library"));
+				compileTargetCombo.Model = store;
+				CellRendererText cr = new CellRendererText ();
+				compileTargetCombo.PackStart (cr, true);
+				compileTargetCombo.AddAttribute (cr, "text", 0);
+				compileTargetCombo.Active = (int) configuration.CompileTarget;
+
+				if (compilerParameters.Compiler == JavaCompiler.Javac)
+					compilerJavacButton.Active = true;
+				else
+					compilerGcjButton.Active = true;
+					
+				compilerJavacButton.Toggled += OnCompilerToggled;
+				compilerGcjButton.Toggled += OnCompilerToggled;
+	
+				enableOptimizationCheckButton.Active = compilerParameters.Optimize;
+				generateDebugInformationCheckButton.Active = configuration.DebugMode;
+				deprecationCheckButton.Active = compilerParameters.Deprecation;
+				generateWarningsCheckButton.Active = compilerParameters.GenWarnings;
+				warningsAsErrorsCheckButton.Active = !configuration.RunWithWarnings;
+				
+				compilerEntry.Text = compilerParameters.CompilerPath;
+				classPathEntry.Text = compilerParameters.ClassPath;				
+				mainClassEntry.Text = compilerParameters.MainClass;				
+				symbolsEntry.Text = compilerParameters.DefineSymbols;				
+			}
+			
+			void OnCompilerToggled (object o, EventArgs args)
+			{
+				if (compilerJavacButton.Active)
+					compilerEntry.Text = "javac";
+				else
+					compilerEntry.Text = "gcj";
+			}
+			
+			public bool Store ()
+			{
 				if (compilerParameters == null)
 					return true;
 
-				if (javac.Active)
+				if (compilerJavacButton.Active)
 					compilerParameters.Compiler = JavaCompiler.Javac;
 				else
 					compilerParameters.Compiler = JavaCompiler.Gcj;
 
-				compilerParameters.GenWarnings = checkWarnings.Active;			
-				compilerParameters.Deprecation = checkDeprecation.Active;			
-				configuration.DebugMode = checkDebug.Active;			
-				compilerParameters.Optimize = checkOptimize.Active;						
-				configuration.OutputAssembly = outputAssembly.Text;
-				configuration.OutputDirectory = outputDirectory.Text;
+				configuration.CompileTarget = (CompileTarget) compileTargetCombo.Active;
+				compilerParameters.GenWarnings = generateWarningsCheckButton.Active;			
+				compilerParameters.Deprecation = deprecationCheckButton.Active;			
+				configuration.DebugMode = generateDebugInformationCheckButton.Active;			
+				compilerParameters.Optimize = enableOptimizationCheckButton.Active;
+				configuration.RunWithWarnings = !warningsAsErrorsCheckButton.Active;
 				
-				compilerParameters.CompilerPath = compilerPath.Text;
-				compilerParameters.ClassPath = classPath.Text;
-				compilerParameters.MainClass = mainClass.Text;
+				compilerParameters.CompilerPath = compilerEntry.Text;
+				compilerParameters.ClassPath = classPathEntry.Text;
+				compilerParameters.MainClass = mainClassEntry.Text;
+				compilerParameters.DefineSymbols = symbolsEntry.Text;
+				return true;
 			}
-			return true;
 		}
-		
-		void SetValues(object sender, EventArgs e)
-		{
-			configuration = (DotNetProjectConfiguration)((IProperties)CustomizationObject).GetProperty("Config");
-			compilerParameters = (JavaCompilerParameters) configuration.CompilationParameters;
-			
-			if (compilerParameters.Compiler == JavaCompiler.Javac)
-				javac.Active = true;
-			else
-				gcj.Active = true;
 
-			checkOptimize.Active = compilerParameters.Optimize;
-			checkDebug.Active = configuration.DebugMode;
-			checkDeprecation.Active = compilerParameters.Deprecation;
-			checkWarnings.Active = compilerParameters.GenWarnings;
-			outputAssembly.Text = configuration.OutputAssembly;
-			outputDirectory.Text = configuration.OutputDirectory;
-			
-			compilerPath.Text = compilerParameters.CompilerPath;
-			classPath.Text = compilerParameters.ClassPath;				
-			mainClass.Text = compilerParameters.MainClass;				
-		}
+		CodeGenerationPanelWidget widget;
 		
-		void SelectFolder(object sender, EventArgs e)
+		public override void LoadPanelContents()
 		{
-			using (FolderDialog fdiag = new FolderDialog (GettextCatalog.GetString ("Browse"))) {
-			
-				if (fdiag.Run () == (int) ResponseType.Ok) {
-					//textBox3.Text = fdiag.Path;
-				}
-				fdiag.Hide ();
-			}
+			Add (widget = new  CodeGenerationPanelWidget ((IProperties) CustomizationObject));
 		}
 		
-		public ProjectConfigurationPropertyPanel ()
+		public override bool StorePanelContents()
 		{
-			InitializeComponent ();						
-			VBox vbox = new VBox ();
-			HBox hboxTitle = new HBox ();
-			hboxTitle.PackStart (titleLabel, false, false, 0);
-			vbox.PackStart (hboxTitle);
-			vbox.PackStart (outputAssembly);
-			HBox hboxCompiler = new HBox ();
-			hboxCompiler.PackStart (labelCompiler, false, false, 0);
-			vbox.PackStart (hboxCompiler);
-			HBox comps = new HBox ();
-			comps.PackStart (gcj);
-			comps.PackStart (javac);
-			vbox.PackStart (comps);
-			vbox.PackStart (compilerPath);
-			HBox hboxRuntime = new HBox ();
-			hboxRuntime.PackStart (runtimeLabel, false, false, 0);
-			vbox.PackStart (hboxRuntime);
-			HBox hboxClasspath = new HBox ();
-			hboxClasspath.PackStart (labelClasspath, false, false, 0);
-			vbox.PackStart (hboxClasspath);
-			vbox.PackStart (classPath);
-			HBox hboxMainClass = new HBox ();
-			hboxMainClass.PackStart (labelMainClass, false, false, 0);
-			vbox.PackStart (hboxMainClass);
-			vbox.PackStart (mainClass);
-			HBox hboxWarnings = new HBox ();
-			hboxWarnings.PackStart (labelWarnings, false, false, 0);
-			vbox.PackStart (hboxWarnings);
-			HBox hbox = new HBox ();
-			hbox.PackStart (checkDeprecation);
-			hbox.PackStart (checkDebug);
-			hbox.PackStart (checkOptimize);
-			vbox.PackStart (hbox);
-			HBox hboxOutput = new HBox ();
-			hboxOutput.PackStart (labelOutput, false, false, 0);
-			vbox.PackStart (hboxOutput);
-			vbox.PackStart (outputDirectory);
-			this.Add (vbox);
-			CustomizationObjectChanged += new EventHandler (SetValues);
+			bool result = true;
+			result = widget.Store ();
+ 			return result;
 		}
-
-		void OnCompilerToggled (object o, EventArgs args)
-		{
-			if (javac.Active)
-				compilerPath.Text = "javac";
-			else
-				compilerPath.Text = "gcj";
-		}
-		
-		private void InitializeComponent()
-		{
-			gcj = new RadioButton (javac, "gcj");
-			gcj.Toggled += OnCompilerToggled;
-			javac.Toggled += OnCompilerToggled;
-
-			this.browseButton = new Button ("_Browse");
-			this.browseButton.Clicked += new EventHandler (SelectFolder);
-			labelOutput.Markup = String.Format ("<b>{0}</b>", GettextCatalog.GetString ("Output path"));
-			this.outputAssembly = new Entry ();
-			titleLabel.Markup = String.Format ("<b>{0}</b>", GettextCatalog.GetString ("Output Assembly"));
-			labelWarnings.Markup = String.Format ("<b>{0}</b>", GettextCatalog.GetString ("Warnings and Errors"));
-			
-			labelCompiler.Markup = String.Format ("<b>{0}</b>", GettextCatalog.GetString ("Compiler"));
-			labelClasspath.Markup = String.Format ("<b>{0}</b>", GettextCatalog.GetString ("Classpath"));
-			labelMainClass.Markup = String.Format ("<b>{0}</b>", GettextCatalog.GetString ("Main Class"));
-		}
 	}
 }

Added: trunk/MonoDevelop/Extras/JavaBinding/Java.glade
===================================================================
--- trunk/MonoDevelop/Extras/JavaBinding/Java.glade	2005-05-20 14:28:56 UTC (rev 2548)
+++ trunk/MonoDevelop/Extras/JavaBinding/Java.glade	2005-05-20 14:37:15 UTC (rev 2549)
@@ -0,0 +1,1078 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+<requires lib="gnome"/>
+
+<widget class="GtkWindow" id="CodeGenerationPanel">
+  <property name="visible">True</property>
+  <property name="title" translatable="yes">CodeGenerationPanel</property>
+  <property name="type">GTK_WINDOW_TOPLEVEL</property>
+  <property name="window_position">GTK_WIN_POS_NONE</property>
+  <property name="modal">False</property>
+  <property name="resizable">True</property>
+  <property name="destroy_with_parent">False</property>
+  <property name="decorated">True</property>
+  <property name="skip_taskbar_hint">False</property>
+  <property name="skip_pager_hint">False</property>
+  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+
+  <child>
+    <widget class="GtkVBox" id="vbox62">
+      <property name="visible">True</property>
+      <property name="homogeneous">False</property>
+      <property name="spacing">12</property>
+
+      <child>
+	<widget class="GtkLabel" id="label82">
+	  <property name="visible">True</property>
+	  <property name="label" translatable="yes">&lt;b&gt;Code Generation&lt;/b&gt;</property>
+	  <property name="use_underline">False</property>
+	  <property name="use_markup">True</property>
+	  <property name="justify">GTK_JUSTIFY_LEFT</property>
+	  <property name="wrap">False</property>
+	  <property name="selectable">False</property>
+	  <property name="xalign">0</property>
+	  <property name="yalign">0.5</property>
+	  <property name="xpad">0</property>
+	  <property name="ypad">0</property>
+	</widget>
+	<packing>
+	  <property name="padding">0</property>
+	  <property name="expand">False</property>
+	  <property name="fill">False</property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkHBox" id="hbox56">
+	  <property name="visible">True</property>
+	  <property name="homogeneous">False</property>
+	  <property name="spacing">0</property>
+
+	  <child>
+	    <widget class="GtkLabel" id="label81">
+	      <property name="width_request">18</property>
+	      <property name="visible">True</property>
+	      <property name="label" translatable="yes"></property>
+	      <property name="use_underline">False</property>
+	      <property name="use_markup">False</property>
+	      <property name="justify">GTK_JUSTIFY_LEFT</property>
+	      <property name="wrap">False</property>
+	      <property name="selectable">False</property>
+	      <property name="xalign">0.5</property>
+	      <property name="yalign">0.5</property>
+	      <property name="xpad">0</property>
+	      <property name="ypad">0</property>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">False</property>
+	      <property name="fill">False</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkVBox" id="vbox65">
+	      <property name="visible">True</property>
+	      <property name="homogeneous">False</property>
+	      <property name="spacing">6</property>
+
+	      <child>
+		<widget class="GtkTable" id="table7">
+		  <property name="visible">True</property>
+		  <property name="n_rows">4</property>
+		  <property name="n_columns">2</property>
+		  <property name="homogeneous">False</property>
+		  <property name="row_spacing">6</property>
+		  <property name="column_spacing">6</property>
+
+		  <child>
+		    <widget class="GtkLabel" id="label86">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">Compile _Target:</property>
+		      <property name="use_underline">True</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">False</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0</property>
+		      <property name="yalign">0.5</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		    </widget>
+		    <packing>
+		      <property name="left_attach">0</property>
+		      <property name="right_attach">1</property>
+		      <property name="top_attach">0</property>
+		      <property name="bottom_attach">1</property>
+		      <property name="x_options">fill</property>
+		      <property name="y_options"></property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkLabel" id="label87">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">Define S_ymbols:</property>
+		      <property name="use_underline">True</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">False</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0</property>
+		      <property name="yalign">0.5</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		      <property name="mnemonic_widget">symbolsEntry</property>
+		    </widget>
+		    <packing>
+		      <property name="left_attach">0</property>
+		      <property name="right_attach">1</property>
+		      <property name="top_attach">1</property>
+		      <property name="bottom_attach">2</property>
+		      <property name="x_options">fill</property>
+		      <property name="y_options"></property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkLabel" id="label88">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">_Main Class:</property>
+		      <property name="use_underline">True</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">False</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0</property>
+		      <property name="yalign">0.5</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		      <property name="mnemonic_widget">mainClassEntry</property>
+		    </widget>
+		    <packing>
+		      <property name="left_attach">0</property>
+		      <property name="right_attach">1</property>
+		      <property name="top_attach">2</property>
+		      <property name="bottom_attach">3</property>
+		      <property name="x_options">fill</property>
+		      <property name="y_options"></property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkEntry" id="symbolsEntry">
+		      <property name="visible">True</property>
+		      <property name="can_focus">True</property>
+		      <property name="editable">True</property>
+		      <property name="visibility">True</property>
+		      <property name="max_length">0</property>
+		      <property name="text" translatable="yes"></property>
+		      <property name="has_frame">True</property>
+		      <property name="invisible_char" translatable="yes">*</property>
+		      <property name="activates_default">False</property>
+		    </widget>
+		    <packing>
+		      <property name="left_attach">1</property>
+		      <property name="right_attach">2</property>
+		      <property name="top_attach">1</property>
+		      <property name="bottom_attach">2</property>
+		      <property name="y_options"></property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkEntry" id="mainClassEntry">
+		      <property name="visible">True</property>
+		      <property name="can_focus">True</property>
+		      <property name="editable">True</property>
+		      <property name="visibility">True</property>
+		      <property name="max_length">0</property>
+		      <property name="text" translatable="yes"></property>
+		      <property name="has_frame">True</property>
+		      <property name="invisible_char" translatable="yes">*</property>
+		      <property name="activates_default">False</property>
+		    </widget>
+		    <packing>
+		      <property name="left_attach">1</property>
+		      <property name="right_attach">2</property>
+		      <property name="top_attach">2</property>
+		      <property name="bottom_attach">3</property>
+		      <property name="y_options"></property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkLabel" id="label91">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">Classpath:</property>
+		      <property name="use_underline">True</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">False</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0</property>
+		      <property name="yalign">0.5</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		      <property name="mnemonic_widget">classPathEntry</property>
+		    </widget>
+		    <packing>
+		      <property name="left_attach">0</property>
+		      <property name="right_attach">1</property>
+		      <property name="top_attach">3</property>
+		      <property name="bottom_attach">4</property>
+		      <property name="x_options">fill</property>
+		      <property name="y_options"></property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkEntry" id="classPathEntry">
+		      <property name="visible">True</property>
+		      <property name="can_focus">True</property>
+		      <property name="editable">True</property>
+		      <property name="visibility">True</property>
+		      <property name="max_length">0</property>
+		      <property name="text" translatable="yes"></property>
+		      <property name="has_frame">True</property>
+		      <property name="invisible_char" translatable="yes">*</property>
+		      <property name="activates_default">False</property>
+		    </widget>
+		    <packing>
+		      <property name="left_attach">1</property>
+		      <property name="right_attach">2</property>
+		      <property name="top_attach">3</property>
+		      <property name="bottom_attach">4</property>
+		      <property name="y_options"></property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkHBox" id="hbox61">
+		      <property name="visible">True</property>
+		      <property name="homogeneous">False</property>
+		      <property name="spacing">0</property>
+
+		      <child>
+			<widget class="GtkComboBox" id="compileTargetCombo">
+			  <property name="visible">True</property>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">False</property>
+			</packing>
+		      </child>
+		    </widget>
+		    <packing>
+		      <property name="left_attach">1</property>
+		      <property name="right_attach">2</property>
+		      <property name="top_attach">0</property>
+		      <property name="bottom_attach">1</property>
+		      <property name="x_options">fill</property>
+		      <property name="y_options">fill</property>
+		    </packing>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">True</property>
+		  <property name="fill">True</property>
+		</packing>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">True</property>
+	      <property name="fill">True</property>
+	    </packing>
+	  </child>
+	</widget>
+	<packing>
+	  <property name="padding">0</property>
+	  <property name="expand">False</property>
+	  <property name="fill">False</property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkLabel" id="label92">
+	  <property name="visible">True</property>
+	  <property name="label" translatable="yes">&lt;b&gt;Compiler&lt;/b&gt;</property>
+	  <property name="use_underline">False</property>
+	  <property name="use_markup">True</property>
+	  <property name="justify">GTK_JUSTIFY_LEFT</property>
+	  <property name="wrap">False</property>
+	  <property name="selectable">False</property>
+	  <property name="xalign">0</property>
+	  <property name="yalign">0.5</property>
+	  <property name="xpad">0</property>
+	  <property name="ypad">0</property>
+	</widget>
+	<packing>
+	  <property name="padding">0</property>
+	  <property name="expand">False</property>
+	  <property name="fill">False</property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkHBox" id="hbox57">
+	  <property name="visible">True</property>
+	  <property name="homogeneous">False</property>
+	  <property name="spacing">0</property>
+
+	  <child>
+	    <widget class="GtkLabel" id="label93">
+	      <property name="width_request">18</property>
+	      <property name="visible">True</property>
+	      <property name="label" translatable="yes"></property>
+	      <property name="use_underline">False</property>
+	      <property name="use_markup">False</property>
+	      <property name="justify">GTK_JUSTIFY_LEFT</property>
+	      <property name="wrap">False</property>
+	      <property name="selectable">False</property>
+	      <property name="xalign">0.5</property>
+	      <property name="yalign">0.5</property>
+	      <property name="xpad">0</property>
+	      <property name="ypad">0</property>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">False</property>
+	      <property name="fill">False</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkVBox" id="vbox66">
+	      <property name="visible">True</property>
+	      <property name="homogeneous">False</property>
+	      <property name="spacing">0</property>
+
+	      <child>
+		<widget class="GtkHBox" id="hbox58">
+		  <property name="visible">True</property>
+		  <property name="homogeneous">False</property>
+		  <property name="spacing">18</property>
+
+		  <child>
+		    <widget class="GtkRadioButton" id="compilerGcjButton">
+		      <property name="visible">True</property>
+		      <property name="can_focus">True</property>
+		      <property name="label" translatable="yes">gcj</property>
+		      <property name="use_underline">True</property>
+		      <property name="relief">GTK_RELIEF_NORMAL</property>
+		      <property name="focus_on_click">True</property>
+		      <property name="active">False</property>
+		      <property name="inconsistent">False</property>
+		      <property name="draw_indicator">True</property>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">False</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkRadioButton" id="compilerJavacButton">
+		      <property name="visible">True</property>
+		      <property name="can_focus">True</property>
+		      <property name="label" translatable="yes">javac</property>
+		      <property name="use_underline">True</property>
+		      <property name="relief">GTK_RELIEF_NORMAL</property>
+		      <property name="focus_on_click">True</property>
+		      <property name="active">False</property>
+		      <property name="inconsistent">False</property>
+		      <property name="draw_indicator">True</property>
+		      <property name="group">compilerGcjButton</property>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">False</property>
+		    </packing>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">True</property>
+		  <property name="fill">True</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkEntry" id="compilerEntry">
+		  <property name="visible">True</property>
+		  <property name="can_focus">True</property>
+		  <property name="editable">True</property>
+		  <property name="visibility">True</property>
+		  <property name="max_length">0</property>
+		  <property name="text" translatable="yes"></property>
+		  <property name="has_frame">True</property>
+		  <property name="invisible_char" translatable="yes">*</property>
+		  <property name="activates_default">False</property>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">False</property>
+		</packing>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">True</property>
+	      <property name="fill">True</property>
+	    </packing>
+	  </child>
+	</widget>
+	<packing>
+	  <property name="padding">0</property>
+	  <property name="expand">False</property>
+	  <property name="fill">False</property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkHBox" id="hbox60">
+	  <property name="visible">True</property>
+	  <property name="homogeneous">False</property>
+	  <property name="spacing">0</property>
+
+	  <child>
+	    <widget class="GtkVBox" id="vbox68">
+	      <property name="visible">True</property>
+	      <property name="homogeneous">False</property>
+	      <property name="spacing">6</property>
+
+	      <child>
+		<widget class="GtkLabel" id="label90">
+		  <property name="visible">True</property>
+		  <property name="label" translatable="yes">&lt;b&gt;Options&lt;/b&gt;</property>
+		  <property name="use_underline">True</property>
+		  <property name="use_markup">True</property>
+		  <property name="justify">GTK_JUSTIFY_LEFT</property>
+		  <property name="wrap">False</property>
+		  <property name="selectable">False</property>
+		  <property name="xalign">0</property>
+		  <property name="yalign">0.5</property>
+		  <property name="xpad">0</property>
+		  <property name="ypad">0</property>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">False</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkHBox" id="hbox47">
+		  <property name="visible">True</property>
+		  <property name="homogeneous">False</property>
+		  <property name="spacing">0</property>
+
+		  <child>
+		    <widget class="GtkLabel" id="label72">
+		      <property name="width_request">18</property>
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes"></property>
+		      <property name="use_underline">False</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">False</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0.5</property>
+		      <property name="yalign">0.5</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">False</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkVBox" id="vbox64">
+		      <property name="visible">True</property>
+		      <property name="homogeneous">False</property>
+		      <property name="spacing">6</property>
+
+		      <child>
+			<widget class="GtkCheckButton" id="enableOptimizationCheckButton">
+			  <property name="visible">True</property>
+			  <property name="can_focus">True</property>
+			  <property name="label" translatable="yes">Enable _optimizations</property>
+			  <property name="use_underline">True</property>
+			  <property name="relief">GTK_RELIEF_NORMAL</property>
+			  <property name="focus_on_click">True</property>
+			  <property name="active">False</property>
+			  <property name="inconsistent">False</property>
+			  <property name="draw_indicator">True</property>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">False</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkCheckButton" id="generateDebugInformationCheckButton">
+			  <property name="visible">True</property>
+			  <property name="can_focus">True</property>
+			  <property name="label" translatable="yes">Emit _debugging information</property>
+			  <property name="use_underline">True</property>
+			  <property name="relief">GTK_RELIEF_NORMAL</property>
+			  <property name="focus_on_click">True</property>
+			  <property name="active">False</property>
+			  <property name="inconsistent">False</property>
+			  <property name="draw_indicator">True</property>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">False</property>
+			</packing>
+		      </child>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">True</property>
+		      <property name="fill">True</property>
+		    </packing>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">True</property>
+		  <property name="fill">True</property>
+		</packing>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">True</property>
+	      <property name="fill">True</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkVBox" id="vbox69">
+	      <property name="visible">True</property>
+	      <property name="homogeneous">False</property>
+	      <property name="spacing">6</property>
+
+	      <child>
+		<widget class="GtkLabel" id="label94">
+		  <property name="visible">True</property>
+		  <property name="label" translatable="yes">&lt;b&gt;Warnings&lt;/b&gt;</property>
+		  <property name="use_underline">True</property>
+		  <property name="use_markup">True</property>
+		  <property name="justify">GTK_JUSTIFY_LEFT</property>
+		  <property name="wrap">False</property>
+		  <property name="selectable">False</property>
+		  <property name="xalign">0</property>
+		  <property name="yalign">0.5</property>
+		  <property name="xpad">0</property>
+		  <property name="ypad">0</property>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">False</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkHBox" id="hbox59">
+		  <property name="visible">True</property>
+		  <property name="homogeneous">False</property>
+		  <property name="spacing">0</property>
+
+		  <child>
+		    <widget class="GtkLabel" id="label95">
+		      <property name="width_request">18</property>
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes"></property>
+		      <property name="use_underline">False</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">False</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0.5</property>
+		      <property name="yalign">0.5</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">False</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkVBox" id="vbox67">
+		      <property name="visible">True</property>
+		      <property name="homogeneous">False</property>
+		      <property name="spacing">6</property>
+
+		      <child>
+			<widget class="GtkCheckButton" id="generateWarningsCheckButton">
+			  <property name="visible">True</property>
+			  <property name="can_focus">True</property>
+			  <property name="label" translatable="yes">Generate warnings</property>
+			  <property name="use_underline">True</property>
+			  <property name="relief">GTK_RELIEF_NORMAL</property>
+			  <property name="focus_on_click">True</property>
+			  <property name="active">False</property>
+			  <property name="inconsistent">False</property>
+			  <property name="draw_indicator">True</property>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">False</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkCheckButton" id="deprecationCheckButton">
+			  <property name="visible">True</property>
+			  <property name="can_focus">True</property>
+			  <property name="label" translatable="yes">Enable deprecation warnings</property>
+			  <property name="use_underline">True</property>
+			  <property name="relief">GTK_RELIEF_NORMAL</property>
+			  <property name="focus_on_click">True</property>
+			  <property name="active">False</property>
+			  <property name="inconsistent">False</property>
+			  <property name="draw_indicator">True</property>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">False</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkCheckButton" id="warningsAsErrorsCheckButton">
+			  <property name="visible">True</property>
+			  <property name="can_focus">True</property>
+			  <property name="label" translatable="yes">Treat warnings as _errors</property>
+			  <property name="use_underline">True</property>
+			  <property name="relief">GTK_RELIEF_NORMAL</property>
+			  <property name="focus_on_click">True</property>
+			  <property name="active">False</property>
+			  <property name="inconsistent">False</property>
+			  <property name="draw_indicator">True</property>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">False</property>
+			</packing>
+		      </child>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">True</property>
+		      <property name="fill">True</property>
+		    </packing>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">True</property>
+		  <property name="fill">True</property>
+		</packing>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">True</property>
+	      <property name="fill">True</property>
+	    </packing>
+	  </child>
+	</widget>
+	<packing>
+	  <property name="padding">0</property>
+	  <property name="expand">True</property>
+	  <property name="fill">True</property>
+	</packing>
+      </child>
+    </widget>
+  </child>
+</widget>
+
+<widget class="GtkWindow" id="GlobalOptionsPanel">
+  <property name="visible">True</property>
+  <property name="title" translatable="yes">window1</property>
+  <property name="type">GTK_WINDOW_TOPLEVEL</property>
+  <property name="window_position">GTK_WIN_POS_NONE</property>
+  <property name="modal">False</property>
+  <property name="resizable">True</property>
+  <property name="destroy_with_parent">False</property>
+  <property name="decorated">True</property>
+  <property name="skip_taskbar_hint">False</property>
+  <property name="skip_pager_hint">False</property>
+  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+
+  <child>
+    <widget class="GtkVBox" id="vbox70">
+      <property name="visible">True</property>
+      <property name="homogeneous">False</property>
+      <property name="spacing">12</property>
+
+      <child>
+	<widget class="GtkLabel" id="label96">
+	  <property name="visible">True</property>
+	  <property name="label" translatable="yes">&lt;b&gt;Compiler&lt;/b&gt;</property>
+	  <property name="use_underline">False</property>
+	  <property name="use_markup">True</property>
+	  <property name="justify">GTK_JUSTIFY_LEFT</property>
+	  <property name="wrap">False</property>
+	  <property name="selectable">False</property>
+	  <property name="xalign">0</property>
+	  <property name="yalign">0.5</property>
+	  <property name="xpad">0</property>
+	  <property name="ypad">0</property>
+	</widget>
+	<packing>
+	  <property name="padding">0</property>
+	  <property name="expand">False</property>
+	  <property name="fill">False</property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkHBox" id="hbox63">
+	  <property name="visible">True</property>
+	  <property name="homogeneous">False</property>
+	  <property name="spacing">0</property>
+
+	  <child>
+	    <widget class="GtkLabel" id="label100">
+	      <property name="width_request">18</property>
+	      <property name="visible">True</property>
+	      <property name="label" translatable="yes"></property>
+	      <property name="use_underline">False</property>
+	      <property name="use_markup">False</property>
+	      <property name="justify">GTK_JUSTIFY_LEFT</property>
+	      <property name="wrap">False</property>
+	      <property name="selectable">False</property>
+	      <property name="xalign">0.5</property>
+	      <property name="yalign">0.5</property>
+	      <property name="xpad">0</property>
+	      <property name="ypad">0</property>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">False</property>
+	      <property name="fill">False</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkTable" id="table9">
+	      <property name="visible">True</property>
+	      <property name="n_rows">3</property>
+	      <property name="n_columns">2</property>
+	      <property name="homogeneous">False</property>
+	      <property name="row_spacing">6</property>
+	      <property name="column_spacing">6</property>
+
+	      <child>
+		<widget class="GtkLabel" id="label98">
+		  <property name="visible">True</property>
+		  <property name="label" translatable="yes">IKVM path:</property>
+		  <property name="use_underline">False</property>
+		  <property name="use_markup">False</property>
+		  <property name="justify">GTK_JUSTIFY_LEFT</property>
+		  <property name="wrap">False</property>
+		  <property name="selectable">False</property>
+		  <property name="xalign">0</property>
+		  <property name="yalign">0.5</property>
+		  <property name="xpad">0</property>
+		  <property name="ypad">0</property>
+		</widget>
+		<packing>
+		  <property name="left_attach">0</property>
+		  <property name="right_attach">1</property>
+		  <property name="top_attach">0</property>
+		  <property name="bottom_attach">1</property>
+		  <property name="x_options">fill</property>
+		  <property name="y_options"></property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkLabel" id="label99">
+		  <property name="visible">True</property>
+		  <property name="label" translatable="yes">Java compiler:</property>
+		  <property name="use_underline">False</property>
+		  <property name="use_markup">False</property>
+		  <property name="justify">GTK_JUSTIFY_LEFT</property>
+		  <property name="wrap">False</property>
+		  <property name="selectable">False</property>
+		  <property name="xalign">0</property>
+		  <property name="yalign">0.5</property>
+		  <property name="xpad">0</property>
+		  <property name="ypad">0</property>
+		</widget>
+		<packing>
+		  <property name="left_attach">0</property>
+		  <property name="right_attach">1</property>
+		  <property name="top_attach">1</property>
+		  <property name="bottom_attach">2</property>
+		  <property name="x_options">fill</property>
+		  <property name="y_options"></property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkLabel" id="label101">
+		  <property name="visible">True</property>
+		  <property name="label" translatable="yes">Compiler command:</property>
+		  <property name="use_underline">False</property>
+		  <property name="use_markup">False</property>
+		  <property name="justify">GTK_JUSTIFY_LEFT</property>
+		  <property name="wrap">False</property>
+		  <property name="selectable">False</property>
+		  <property name="xalign">0</property>
+		  <property name="yalign">0.5</property>
+		  <property name="xpad">0</property>
+		  <property name="ypad">0</property>
+		</widget>
+		<packing>
+		  <property name="left_attach">0</property>
+		  <property name="right_attach">1</property>
+		  <property name="top_attach">2</property>
+		  <property name="bottom_attach">3</property>
+		  <property name="x_options">fill</property>
+		  <property name="y_options"></property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkHBox" id="hbox64">
+		  <property name="visible">True</property>
+		  <property name="homogeneous">False</property>
+		  <property name="spacing">0</property>
+
+		  <child>
+		    <widget class="GtkComboBox" id="compilerCombo">
+		      <property name="visible">True</property>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">False</property>
+		    </packing>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="left_attach">1</property>
+		  <property name="right_attach">2</property>
+		  <property name="top_attach">1</property>
+		  <property name="bottom_attach">2</property>
+		  <property name="y_options">fill</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GnomeFileEntry" id="ikvmPathEntry">
+		  <property name="visible">True</property>
+		  <property name="max_saved">10</property>
+		  <property name="directory_entry">True</property>
+		  <property name="modal">True</property>
+		  <property name="use_filechooser">True</property>
+
+		  <child internal-child="entry">
+		    <widget class="GtkEntry" id="combo-entry1">
+		      <property name="visible">True</property>
+		      <property name="can_focus">True</property>
+		      <property name="editable">True</property>
+		      <property name="visibility">True</property>
+		      <property name="max_length">0</property>
+		      <property name="text" translatable="yes"></property>
+		      <property name="has_frame">True</property>
+		      <property name="invisible_char" translatable="yes">*</property>
+		      <property name="activates_default">False</property>
+		    </widget>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="left_attach">1</property>
+		  <property name="right_attach">2</property>
+		  <property name="top_attach">0</property>
+		  <property name="bottom_attach">1</property>
+		  <property name="y_options"></property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkEntry" id="compilerPathEntry">
+		  <property name="visible">True</property>
+		  <property name="can_focus">True</property>
+		  <property name="editable">True</property>
+		  <property name="visibility">True</property>
+		  <property name="max_length">0</property>
+		  <property name="text" translatable="yes"></property>
+		  <property name="has_frame">True</property>
+		  <property name="invisible_char" translatable="yes">*</property>
+		  <property name="activates_default">False</property>
+		</widget>
+		<packing>
+		  <property name="left_attach">1</property>
+		  <property name="right_attach">2</property>
+		  <property name="top_attach">2</property>
+		  <property name="bottom_attach">3</property>
+		  <property name="y_options"></property>
+		</packing>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">True</property>
+	      <property name="fill">True</property>
+	    </packing>
+	  </child>
+	</widget>
+	<packing>
+	  <property name="padding">0</property>
+	  <property name="expand">False</property>
+	  <property name="fill">False</property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkLabel" id="label97">
+	  <property name="visible">True</property>
+	  <property name="label" translatable="yes">&lt;b&gt;Code Generation&lt;/b&gt;</property>
+	  <property name="use_underline">False</property>
+	  <property name="use_markup">True</property>
+	  <property name="justify">GTK_JUSTIFY_LEFT</property>
+	  <property name="wrap">False</property>
+	  <property name="selectable">False</property>
+	  <property name="xalign">0</property>
+	  <property name="yalign">0.5</property>
+	  <property name="xpad">0</property>
+	  <property name="ypad">0</property>
+	</widget>
+	<packing>
+	  <property name="padding">0</property>
+	  <property name="expand">False</property>
+	  <property name="fill">False</property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkHBox" id="hbox65">
+	  <property name="visible">True</property>
+	  <property name="homogeneous">False</property>
+	  <property name="spacing">0</property>
+
+	  <child>
+	    <widget class="GtkLabel" id="label102">
+	      <property name="width_request">18</property>
+	      <property name="visible">True</property>
+	      <property name="label" translatable="yes"></property>
+	      <property name="use_underline">False</property>
+	      <property name="use_markup">False</property>
+	      <property name="justify">GTK_JUSTIFY_LEFT</property>
+	      <property name="wrap">False</property>
+	      <property name="selectable">False</property>
+	      <property name="xalign">0.5</property>
+	      <property name="yalign">0.5</property>
+	      <property name="xpad">0</property>
+	      <property name="ypad">0</property>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">False</property>
+	      <property name="fill">False</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkTable" id="table10">
+	      <property name="visible">True</property>
+	      <property name="n_rows">1</property>
+	      <property name="n_columns">2</property>
+	      <property name="homogeneous">False</property>
+	      <property name="row_spacing">6</property>
+	      <property name="column_spacing">6</property>
+
+	      <child>
+		<widget class="GtkLabel" id="label103">
+		  <property name="visible">True</property>
+		  <property name="label" translatable="yes">Classpath:</property>
+		  <property name="use_underline">False</property>
+		  <property name="use_markup">False</property>
+		  <property name="justify">GTK_JUSTIFY_LEFT</property>
+		  <property name="wrap">False</property>
+		  <property name="selectable">False</property>
+		  <property name="xalign">0</property>
+		  <property name="yalign">0.5</property>
+		  <property name="xpad">0</property>
+		  <property name="ypad">0</property>
+		</widget>
+		<packing>
+		  <property name="left_attach">0</property>
+		  <property name="right_attach">1</property>
+		  <property name="top_attach">0</property>
+		  <property name="bottom_attach">1</property>
+		  <property name="x_options">fill</property>
+		  <property name="y_options"></property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkEntry" id="classpathEntry">
+		  <property name="visible">True</property>
+		  <property name="can_focus">True</property>
+		  <property name="editable">True</property>
+		  <property name="visibility">True</property>
+		  <property name="max_length">0</property>
+		  <property name="text" translatable="yes"></property>
+		  <property name="has_frame">True</property>
+		  <property name="invisible_char" translatable="yes">*</property>
+		  <property name="activates_default">False</property>
+		</widget>
+		<packing>
+		  <property name="left_attach">1</property>
+		  <property name="right_attach">2</property>
+		  <property name="top_attach">0</property>
+		  <property name="bottom_attach">1</property>
+		  <property name="y_options"></property>
+		</packing>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">True</property>
+	      <property name="fill">True</property>
+	    </packing>
+	  </child>
+	</widget>
+	<packing>
+	  <property name="padding">0</property>
+	  <property name="expand">True</property>
+	  <property name="fill">True</property>
+	</packing>
+      </child>
+    </widget>
+  </child>
+</widget>
+
+</glade-interface>

Modified: trunk/MonoDevelop/Extras/JavaBinding/JavaBinding.addin.xml
===================================================================
--- trunk/MonoDevelop/Extras/JavaBinding/JavaBinding.addin.xml	2005-05-20 14:28:56 UTC (rev 2548)
+++ trunk/MonoDevelop/Extras/JavaBinding/JavaBinding.addin.xml	2005-05-20 14:37:15 UTC (rev 2549)
@@ -48,6 +48,8 @@
                      location = "templates/JavaApplicationProject.xpt.xml"/>
     <ProjectTemplate id = "JavaConsoleApplicationProject"
                      location = "templates/JavaConsoleApplicationProject.xpt.xml"/>
+    <ProjectTemplate id = "IkvmLibraryProject"
+                     location = "templates/IkvmLibraryProject.xpt.xml"/>
   </Extension>
 
   <Extension path = "/SharpDevelop/Workbench/ProjectOptions/ConfigurationProperties">
@@ -55,9 +57,22 @@
       <DialogPanel id = "JavaProjectPanel"
                    _label = "Code Generation"
                    class = "JavaBinding.ProjectConfigurationPropertyPanel"/>
+	  <DialogPanel id = "JavaOutputOptionsPanel"
+				 _label = "Output"
+				 class = "MonoDevelop.Gui.Dialogs.OptionPanels.OutputOptionsPanel"/>
     </Conditional>
   </Extension>
 
+  <Extension path = "/SharpDevelop/Dialogs/OptionsDialog">
+	<DialogPanel id    = "JavaOptions"
+		     insertafter = "ToolsOptions"
+		     _label = "Java">
+		<DialogPanel    id = "General"
+				_label = "General"
+				class = "JavaBinding.GlobalOptionsPanelPanel" />
+	</DialogPanel>
+  </Extension>
+
   <Extension path = "/Workspace/Icons">
     <Icon id = "JavaPrj"
           language = "Java"

Modified: trunk/MonoDevelop/Extras/JavaBinding/JavaBindingCompilerServices.cs
===================================================================
--- trunk/MonoDevelop/Extras/JavaBinding/JavaBindingCompilerServices.cs	2005-05-20 14:28:56 UTC (rev 2548)
+++ trunk/MonoDevelop/Extras/JavaBinding/JavaBindingCompilerServices.cs	2005-05-20 14:37:15 UTC (rev 2549)
@@ -25,16 +25,18 @@
 			return Path.GetExtension(fileName) == ".java";
 		}
 		
-		string GetCompilerName (JavaCompilerParameters cp)
+		public ICompilerResult Compile (ProjectFileCollection projectFiles, ProjectReferenceCollection references, DotNetProjectConfiguration configuration, IProgressMonitor monitor)
 		{
-			if (cp.Compiler == JavaCompiler.Gcj)
-				return "gcj";
+			if (JavaLanguageBinding.Properties.IkvmPath == "") {
+				monitor.Log.WriteLine ("The Java addin has not been properly configured.");
+				monitor.Log.WriteLine ("Please set the location of IKVM in the Java configuration section of MonoDevelop preferences.");
+				CompilerResults cre = new CompilerResults (new TempFileCollection ());
+				CompilerError err = new CompilerError ();
+				err.ErrorText = "The Java addin has not been properly configured.";
+				cre.Errors.Add (err);
+				return new DefaultCompilerResult (cre, "");
+			}
 
-			return "javac";
-		}
-		
-		public ICompilerResult Compile (ProjectFileCollection projectFiles, ProjectReferenceCollection references, DotNetProjectConfiguration configuration, IProgressMonitor monitor)
-		{
 			JavaCompilerParameters compilerparameters = (JavaCompilerParameters) configuration.CompilationParameters;
 			if (compilerparameters == null)
 				compilerparameters = new JavaCompilerParameters ();
@@ -42,7 +44,7 @@
 			string outdir = configuration.OutputDirectory;
 			string options = "";
 
-			string compiler = GetCompilerName (compilerparameters);
+			string compiler = compilerparameters.CompilerPath;
 			
 			if (configuration.DebugMode) 
 				options += " -g ";
@@ -58,9 +60,6 @@
 			if (compilerparameters.GenWarnings)
 				options += " -nowarn ";
 			
-			if (compilerparameters.ClassPath == null)
-				options += " -classpath " + compilerparameters.ClassPath;
-			
 			options += " -encoding utf8 ";
 			
 			string files  = "";
@@ -75,6 +74,13 @@
 				}
 			}
 
+			string classpath = compilerparameters.ClassPath;
+			string refClasspath = GenerateReferenceStubs (monitor, configuration, compilerparameters, references);
+			if (refClasspath.Length > 0) {
+				if (classpath.Length > 0) classpath += ":";
+				classpath += refClasspath;
+			}
+			
 			string args = "";
 			
 			if (compilerparameters.Compiler == JavaCompiler.Gcj)
@@ -82,136 +88,184 @@
 			
 			//FIXME re-enable options
 			//FIXME re-enable compilerPath
-			if (compilerparameters.ClassPath == "") {
+			if (classpath == "") {
 				args += files + " -d " + outdir;			
 			} else {
-				args += " -classpath " + compilerparameters.ClassPath + files + " -d " + outdir;
+				args += " -classpath " + classpath + files + " -d " + outdir;
 			}
+			args = options + " " + args;
 			//Console.WriteLine (args);
 
-			string output = String.Empty;
-			string error = String.Empty;
-			TempFileCollection  tf = new TempFileCollection ();			
-			DoCompilation (monitor, compiler, args, tf, configuration, compilerparameters, ref output, ref error);
-			ICompilerResult cr = ParseOutput (tf, output, error);			
-			File.Delete (output);
-			File.Delete (error);
-			return cr;
+			CompilerResults cr = new CompilerResults (new TempFileCollection ());
+			StringWriter output = new StringWriter ();
+			StringWriter error = new StringWriter ();
+			
+			bool res = DoCompilation (monitor, compiler, args, configuration, compilerparameters, output, error);
+			ParseJavaOutput (compilerparameters.Compiler, error.ToString(), cr);
+			
+			if (res) {
+				output = new StringWriter ();
+				error = new StringWriter ();
+				CompileToAssembly (monitor, configuration, compilerparameters, references, output, error);
+				ParseIkvmOutput (compilerparameters.Compiler, error.ToString(), cr);
+			}
+			
+			return new DefaultCompilerResult (cr, "");
 		}
 
-		private void DoCompilation (IProgressMonitor monitor, string compiler, string args, TempFileCollection tf, DotNetProjectConfiguration configuration, JavaCompilerParameters compilerparameters, ref string output, ref string error)
+		private string GenerateReferenceStubs (IProgressMonitor monitor, DotNetProjectConfiguration configuration, JavaCompilerParameters compilerparameters, ProjectReferenceCollection references)
 		{
-			output = Path.GetTempFileName ();
-			error = Path.GetTempFileName ();
+			monitor.Log.WriteLine ("Generating reference stubs ...");
+			
+			// Create stubs for referenced assemblies
+			string ikvmstub = Path.Combine (Path.Combine (JavaLanguageBinding.Properties.IkvmPath, "bin"), "ikvmstub.exe");
+			
+			string classpath = "";
+			
+			if (references != null) {
+				foreach (ProjectReference lib in references) {
+					string asm = lib.GetReferencedFileName ();
+					ProcessWrapper p = Runtime.ProcessService.StartProcess ("/bin/sh", "-c \"mono " + ikvmstub + " " + asm + "\"", configuration.OutputDirectory, null);
+					p.WaitForExit ();
+					
+					if (classpath.Length > 0) classpath += ":";
+					string name = Path.GetFileNameWithoutExtension (Path.GetFileName (asm));
+					classpath += Path.Combine (configuration.OutputDirectory, name + ".jar");
+				}
+			}
+			return classpath;
+		}
+		
+		private bool DoCompilation (IProgressMonitor monitor, string compiler, string args, DotNetProjectConfiguration configuration, JavaCompilerParameters compilerparameters, TextWriter output, TextWriter error)
+		{
+			LogTextWriter chainedError = new LogTextWriter ();
+			chainedError.ChainWriter (monitor.Log);
+			chainedError.ChainWriter (error);
+			
+			LogTextWriter chainedOutput = new LogTextWriter ();
+			chainedOutput.ChainWriter (monitor.Log);
+			chainedOutput.ChainWriter (output);
+			
+			monitor.Log.WriteLine ("Compiling Java source code ...");
 
-			try {
-				monitor.BeginTask (null, 2);
-				monitor.Log.WriteLine ("Compiling Java source code ...");
-				string arguments = String.Format ("-c \"{0} {1} > {2} 2> {3}\"", compiler, args, output, error);
-				ProcessStartInfo si = new ProcessStartInfo ("/bin/sh", arguments);
-				//Console.WriteLine ("{0} {1}", si.FileName, si.Arguments);
-				si.RedirectStandardOutput = true;
-				si.RedirectStandardError = true;
-				si.UseShellExecute = false;
-				Process p = new Process ();
-				p.StartInfo = si;
-				p.Start ();
-				p.WaitForExit ();
-				
-				monitor.Step (1);
-				monitor.Log.WriteLine ("Generating assembly ...");
-				CompileToAssembly (configuration, compilerparameters, output, error);
-			} finally {
-				monitor.EndTask ();
-			}
+			Process p = Runtime.ProcessService.StartProcess (compiler, args, null, chainedOutput, chainedError, null);
+			p.WaitForExit ();
+			return p.ExitCode == 0;
         }
 
-		void CompileToAssembly (DotNetProjectConfiguration configuration, JavaCompilerParameters compilerparameters, string output, string error)
+		void CompileToAssembly (IProgressMonitor monitor, DotNetProjectConfiguration configuration, JavaCompilerParameters compilerparameters, ProjectReferenceCollection references, TextWriter output, TextWriter error)
 		{
+			monitor.Log.WriteLine ("Generating assembly ...");
+			
+			LogTextWriter chainedError = new LogTextWriter ();
+			chainedError.ChainWriter (monitor.Log);
+			chainedError.ChainWriter (error);
+			
+			LogTextWriter chainedOutput = new LogTextWriter ();
+			chainedOutput.ChainWriter (monitor.Log);
+			chainedOutput.ChainWriter (output);
+			
 			string outdir = configuration.OutputDirectory;
 			string outclass = Path.Combine (outdir, configuration.OutputAssembly + ".class");
 			string asm = Path.GetFileNameWithoutExtension (outclass);
+			
+			string opts = "-assembly:" + asm;
+			
+			switch (configuration.CompileTarget) {
+				case CompileTarget.Exe:
+					opts += " -target:exe";
+					break;
+				case CompileTarget.WinExe:
+					opts += " -target:winexe";
+					break;
+				case CompileTarget.Library:
+					opts += " -target:library";
+					break;
+			}
+			
+			if (configuration.DebugMode)
+				opts += " -debug";
+
+			opts += " -srcpath:" + configuration.SourceDirectory;
+			
+			if (references != null) {
+				foreach (ProjectReference lib in references)
+					opts += " -r:" + lib.GetReferencedFileName ();
+			}
+			
+			string ikvmc = Path.Combine (Path.Combine (JavaLanguageBinding.Properties.IkvmPath, "bin"), "ikvmc.exe");
 		
-			// sadly I dont think we can specify the output .class name
-			string args = String.Format ("-c \"ikvmc {0} -assembly:{1} > {2} 2> {3}\"", "*.class", asm, output, error);
-            ProcessStartInfo si = new ProcessStartInfo ("/bin/sh", args);
-			//Console.WriteLine ("{0} {1}", si.FileName, si.Arguments);
-            si.WorkingDirectory = outdir;
-			si.RedirectStandardOutput = true;
-            si.RedirectStandardError = true;
-			si.UseShellExecute = false;
-			Process p = new Process ();
-           	p.StartInfo = si;
-            p.Start ();
+			string args = String.Format ("-c \"mono {0} {1} {2}\"", ikvmc, "*.class", opts);
+			Process p = Runtime.ProcessService.StartProcess ("/bin/sh", args, configuration.OutputDirectory, chainedOutput, chainedError, null);
 			p.WaitForExit ();
 		}
 		
-		ICompilerResult ParseOutput (TempFileCollection tf, string stdout, string stderr)
+		void ParseJavaOutput (JavaCompiler jc, string errorStr, CompilerResults cr)
 		{
-			StringBuilder compilerOutput = new StringBuilder ();
-			CompilerResults cr = new CompilerResults (tf);
-			
-			foreach (string s in new string[] { stdout, stderr })
+			TextReader sr = new StringReader (errorStr);
+			string next = sr.ReadLine ();
+			while (next != null) 
 			{
-				StreamReader sr = File.OpenText (s);
-				while (true) 
-				{
-					string next = sr.ReadLine ();
-				
-					if (next == null)
-						break;
-
-					CompilerError error = CreateErrorFromString (next);
-
-					if (error != null)
-						cr.Errors.Add (error);
-				}
-				sr.Close ();
+				CompilerError error = CreateJavaErrorFromString (jc, next);
+				if (error != null) cr.Errors.Add (error);
+				next = sr.ReadLine ();
 			}
-			return new DefaultCompilerResult (cr, compilerOutput.ToString ());
+			sr.Close ();
 		}
-
+		
 		// FIXME: the various java compilers will probably need to be parse on
 		// their own and then ikvmc would need one as well
-		private static CompilerError CreateErrorFromString (string error)
+		private static CompilerError CreateJavaErrorFromString (JavaCompiler jc, string next)
 		{
+			CompilerError error = new CompilerError ();
+
+			int errorCol = 0;
+			string col = next.Trim ();
+			if (col.Length == 1 && col == "^")
+				errorCol = next.IndexOf ("^");
+
+			int index1 = next.IndexOf (".java:");
+			if (index1 < 0)
+				return null;
+		
+			//string s1 = next.Substring (0, index1);
+			string s2 = next.Substring (index1 + 6);									
+			int index2  = s2.IndexOf (":");				
+			int line = Int32.Parse (next.Substring (index1 + 6, index2));
+			//error.IsWarning   = what[0] == "warning";
+			//error.ErrorNumber = what[what.Length - 1];
+						
+			error.Column = errorCol;
+			error.Line = line;
+			error.ErrorText = next.Substring (index1 + index2 + 7);
+			error.FileName = Path.GetFullPath (next.Substring (0, index1) + ".java"); //Path.GetFileName(filename);
+			return error;
+		}
+		
+		void ParseIkvmOutput (JavaCompiler jc, string errorStr, CompilerResults cr)
+		{
+			TextReader sr = new StringReader (errorStr);
+			string next = sr.ReadLine ();
+			while (next != null) 
+			{
+				CompilerError error = CreateIkvmErrorFromString (next);
+				if (error != null) cr.Errors.Add (error);
+				next = sr.ReadLine ();
+			}
+			sr.Close ();
+		}
+		
+		private static CompilerError CreateIkvmErrorFromString (string error)
+		{
 			if (error.StartsWith ("Note") || error.StartsWith ("Warning"))
 				return null;
 			string trimmed = error.Trim ();
 			if (trimmed.StartsWith ("(to avoid this warning add"))
 				return null;
-			//Console.WriteLine ("error: {0}", error);
 
 			CompilerError cerror = new CompilerError ();
 			cerror.ErrorText = error;
 			return cerror;
 		}
-/* old javac parser
-					CompilerError error = new CompilerError ();
-
-					int errorCol = 0;
-					string col = next.Trim ();
-					if (col.Length == 1 && col == "^")
-						errorCol = next.IndexOf ("^");
-
-					compilerOutput.Append (next);
-					compilerOutput.Append ("\n");
-
-					int index1 = next.IndexOf (".java:");
-					if (index1 < 0)
-						continue;				
-				
-					//string s1 = next.Substring (0, index1);
-					string s2 = next.Substring (index1 + 6);									
-					int index2  = s2.IndexOf (":");				
-					int line = Int32.Parse (next.Substring (index1 + 6, index2));
-					//error.IsWarning   = what[0] == "warning";
-					//error.ErrorNumber = what[what.Length - 1];
-								
-					error.Column = errorCol;
-					error.Line = line;
-					error.ErrorText = next.Substring (index1 + index2 + 7);
-					error.FileName = Path.GetFullPath (next.Substring (0, index1) + ".java"); //Path.GetFileName(filename);
-*/
 	}
 }

Modified: trunk/MonoDevelop/Extras/JavaBinding/JavaLanguageBinding.cs
===================================================================
--- trunk/MonoDevelop/Extras/JavaBinding/JavaLanguageBinding.cs	2005-05-20 14:28:56 UTC (rev 2548)
+++ trunk/MonoDevelop/Extras/JavaBinding/JavaLanguageBinding.cs	2005-05-20 14:37:15 UTC (rev 2549)
@@ -17,6 +17,7 @@
 using MonoDevelop.Internal.Templates;
 using MonoDevelop.Gui;
 using MonoDevelop.Services;
+using MonoDevelop.Core.Properties;
 
 namespace JavaBinding
 {
@@ -28,11 +29,17 @@
 		internal const string LanguageName = "Java";
 		JavaBindingCompilerServices compilerServices = new JavaBindingCompilerServices ();
 		
+		static GlobalProperties props = new GlobalProperties ();
+		
 		public JavaLanguageBinding ()
 		{
 			Runtime.ProjectService.DataContext.IncludeType (typeof(JavaCompilerParameters));
 		}
 		
+		public static GlobalProperties Properties {
+			get { return props; }
+		}
+		
 		public string Language {
 			get {
 				return LanguageName;
@@ -60,12 +67,19 @@
 		public object CreateCompilationParameters (XmlElement projectOptions)
 		{
 			JavaCompilerParameters parameters = new JavaCompilerParameters ();
+			parameters.ClassPath = Path.Combine (Path.Combine (Properties.IkvmPath, "classpath"), "mscorlib.jar");
+			if (Properties.Classpath.Length > 0)
+				parameters.ClassPath += ": " + Properties.Classpath;
+				
+			parameters.Compiler = Properties.CompilerType;
+			parameters.CompilerPath = Properties.CompilerCommand;
+			
 			if (projectOptions != null) {
 				if (projectOptions.Attributes["MainClass"] != null) {
 					parameters.MainClass = projectOptions.GetAttribute ("MainClass");
 				}
 				if (projectOptions.Attributes["ClassPath"] != null) {
-					parameters.ClassPath = projectOptions.GetAttribute ("ClassPath");
+					parameters.ClassPath += ":" + projectOptions.GetAttribute ("ClassPath");
 				}
 			}
 			return parameters;
@@ -77,4 +91,29 @@
 			get { return "//"; }
 		}
 	}
+	
+	public class GlobalProperties
+	{
+		IProperties props = (IProperties) Runtime.Properties.GetProperty ("JavaBinding.GlobalProps", new DefaultProperties ());
+		
+		public string IkvmPath {
+			get { return props.GetProperty ("IkvmPath", ""); }
+			set { props.SetProperty ("IkvmPath", value != null ? value : ""); }
+		}
+		
+		public string CompilerCommand {
+			get { return props.GetProperty ("CompilerCommand", ""); }
+			set { props.SetProperty ("CompilerCommand", value != null ? value : "javac"); }
+		}
+		
+		public JavaCompiler CompilerType {
+			get { return (JavaCompiler) props.GetProperty ("CompilerType", 0); }
+			set { props.SetProperty ("CompilerType", (int)value); }
+		}
+		
+		public string Classpath {
+			get { return props.GetProperty ("Classpath", ""); }
+			set { props.SetProperty ("Classpath", value != null ? value : ""); }
+		}
+	}
 }

Modified: trunk/MonoDevelop/Extras/JavaBinding/Makefile.am
===================================================================
--- trunk/MonoDevelop/Extras/JavaBinding/Makefile.am	2005-05-20 14:28:56 UTC (rev 2548)
+++ trunk/MonoDevelop/Extras/JavaBinding/Makefile.am	2005-05-20 14:37:15 UTC (rev 2549)
@@ -7,10 +7,13 @@
 	/r:$(top_builddir)/build/bin/MonoDevelop.SourceEditor.dll \
 	/r:$(top_builddir)/build/bin/MonoDevelop.Base.dll \
 	/r:$(top_builddir)/build/bin/MonoDevelop.Gui.Widgets.dll \
-	$(GTK_SHARP_LIBS)
+	$(GTK_SHARP_LIBS) \
+	$(GNOME_SHARP_LIBS) \
+	$(GLADE_SHARP_LIBS)
 
 FILES = \
 Gui/ProjectConfigurationPropertyPanel.cs \
+Gui/GlobalOptionsPanel.cs \
 Project/JavaCompilerParameters.cs \
 JavaBindingCompilerServices.cs \
 JavaCompiler.cs \
@@ -23,6 +26,7 @@
 templates/IkvmGladeApplicationProject.xpt.xml \
 templates/IkvmGnomeApplicationProject.xpt.xml \
 templates/IkvmGtkApplicationProject.xpt.xml \
+templates/IkvmLibraryProject.xpt.xml \
 templates/JavaApplet.xft.xml \
 templates/JavaApplicationProject.xpt.xml \
 templates/JavaApplication.xft.xml \
@@ -66,9 +70,9 @@
 	mkdir -p $(ADDIN_BUILD)
 	cp $(srcdir)/$(ADDIN) $(ADDIN_BUILD)/.
 
-$(ASSEMBLY): $(FILES)
+$(ASSEMBLY): $(FILES) $(srcdir)/Java.glade
 	mkdir -p $(ADDIN_BUILD)
-	$(CSC) $(DLLS) $(build_sources) -out:$@ -target:library
+	$(CSC) $(DLLS) -resource:$(srcdir)/Java.glade,Java.glade $(build_sources) -out:$@ -target:library
 
 if ENABLE_JAVA
 assemblydir = $(MD_ADDIN_DIR)/BackendBindings
@@ -79,6 +83,6 @@
 endif
 
 CLEANFILES = $(ASSEMBLY) $(ASSEMBLY).mdb
-EXTRA_DIST = $(FILES) $(ADDIN) $(TEMPLATES)
+EXTRA_DIST = $(FILES) Java.glade $(ADDIN) $(TEMPLATES)
 
 include $(top_srcdir)/Makefile.include

Modified: trunk/MonoDevelop/Extras/JavaBinding/Project/JavaCompilerParameters.cs
===================================================================
--- trunk/MonoDevelop/Extras/JavaBinding/Project/JavaCompilerParameters.cs	2005-05-20 14:28:56 UTC (rev 2548)
+++ trunk/MonoDevelop/Extras/JavaBinding/Project/JavaCompilerParameters.cs	2005-05-20 14:37:15 UTC (rev 2549)
@@ -105,5 +105,14 @@
 				mainclass = value;
 			}
 		}
+		
+		public string DefineSymbols {
+			get {
+				return definesymbols;
+			}
+			set {
+				definesymbols = value;
+			}
+		}
 	}
 }

Modified: trunk/MonoDevelop/Extras/JavaBinding/templates/IkvmConsoleApplicationProject.xpt.xml
===================================================================
--- trunk/MonoDevelop/Extras/JavaBinding/templates/IkvmConsoleApplicationProject.xpt.xml	2005-05-20 14:28:56 UTC (rev 2548)
+++ trunk/MonoDevelop/Extras/JavaBinding/templates/IkvmConsoleApplicationProject.xpt.xml	2005-05-20 14:37:15 UTC (rev 2549)
@@ -25,7 +25,7 @@
 		
 		<Project name = "${ProjectName}" directory = ".">
 			<!-- FIXME: remove path to jar -->
-			<Options Target = "Exe" PauseConsoleOutput = "False" ClassPath = "/usr/lib/mscorlib.jar:." MainClass ="application" />
+			<Options Target = "Exe" PauseConsoleOutput = "False" MainClass ="application" />
 	
 			<Files>
 				<File name = "application.java">

Modified: trunk/MonoDevelop/Extras/JavaBinding/templates/IkvmGladeApplicationProject.xpt.xml
===================================================================
--- trunk/MonoDevelop/Extras/JavaBinding/templates/IkvmGladeApplicationProject.xpt.xml	2005-05-20 14:28:56 UTC (rev 2548)
+++ trunk/MonoDevelop/Extras/JavaBinding/templates/IkvmGladeApplicationProject.xpt.xml	2005-05-20 14:37:15 UTC (rev 2549)
@@ -25,7 +25,16 @@
 		
 		<Project name = "${ProjectName}" directory = ".">
 			<!-- FIXME: do not hardcode these -->
-			<Options Target = "WinExe" PauseConsoleOutput = "False" ClassPath = "/usr/lib/gtk-sharp.jar:/usr/lib/glade-sharp.jar:/usr/lib/glib-sharp.jar:/usr/lib/atk-sharp.jar:/usr/lib/mscorlib.jar:." MainClass ="application" />
+			<Options Target = "WinExe" PauseConsoleOutput = "False" MainClass ="application" />
+		
+			<References>
+				<Reference type="Gac" refto="gtk-sharp, Version=2.0.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+				<Reference type="Gac" refto="gdk-sharp, Version=2.0.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+				<Reference type="Gac" refto="glib-sharp, Version=2.0.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+				<Reference type="Gac" refto="glade-sharp, Version=2.0.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+				<Reference type="Gac" refto="pango-sharp, Version=2.0.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+				<Reference type="Gac" refto="glade-sharp, Version=2.0.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+			</References>
 	
 			<Files>
 				<File name = "application.java">

Modified: trunk/MonoDevelop/Extras/JavaBinding/templates/IkvmGnomeApplicationProject.xpt.xml
===================================================================
--- trunk/MonoDevelop/Extras/JavaBinding/templates/IkvmGnomeApplicationProject.xpt.xml	2005-05-20 14:28:56 UTC (rev 2548)
+++ trunk/MonoDevelop/Extras/JavaBinding/templates/IkvmGnomeApplicationProject.xpt.xml	2005-05-20 14:37:15 UTC (rev 2549)
@@ -25,7 +25,16 @@
 		
 		<Project name = "${ProjectName}" directory = ".">
 			<!-- FIXME: do not hardcode these -->
-			<Options Target = "WinExe" PauseConsoleOutput = "False" ClassPath = "/usr/lib/gnome-sharp.jar:/usr/lib/gtk-sharp.jar:/usr/lib/glib-sharp.jar:/usr/lib/atk-sharp.jar:/usr/lib/mscorlib.jar:." MainClass ="application" />
+			<Options Target = "WinExe" PauseConsoleOutput = "False" MainClass ="application" />
+				
+			<References>
+				<Reference type="Gac" refto="gnome-sharp, Version=2.0.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+				<Reference type="Gac" refto="gtk-sharp, Version=2.0.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+				<Reference type="Gac" refto="gdk-sharp, Version=2.0.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+				<Reference type="Gac" refto="glib-sharp, Version=2.0.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+				<Reference type="Gac" refto="glade-sharp, Version=2.0.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+				<Reference type="Gac" refto="pango-sharp, Version=2.0.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+			</References>
 	
 			<Files>
 				<File name = "application.java">

Modified: trunk/MonoDevelop/Extras/JavaBinding/templates/IkvmGtkApplicationProject.xpt.xml
===================================================================
--- trunk/MonoDevelop/Extras/JavaBinding/templates/IkvmGtkApplicationProject.xpt.xml	2005-05-20 14:28:56 UTC (rev 2548)
+++ trunk/MonoDevelop/Extras/JavaBinding/templates/IkvmGtkApplicationProject.xpt.xml	2005-05-20 14:37:15 UTC (rev 2549)
@@ -25,7 +25,15 @@
 		
 		<Project name = "${ProjectName}" directory = ".">
 			<!-- FIXME: do not hardcode these -->
-			<Options Target = "WinExe" PauseConsoleOutput = "False" ClassPath = "/usr/lib/gtk-sharp.jar:/usr/lib/glib-sharp.jar:/usr/lib/atk-sharp.jar:/usr/lib/mscorlib.jar:." MainClass ="application" />
+			<Options Target = "WinExe" PauseConsoleOutput = "False" MainClass ="application" />
+			
+			<References>
+				<Reference type="Gac" refto="gtk-sharp, Version=2.0.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+				<Reference type="Gac" refto="gdk-sharp, Version=2.0.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+				<Reference type="Gac" refto="glib-sharp, Version=2.0.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+				<Reference type="Gac" refto="glade-sharp, Version=2.0.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+				<Reference type="Gac" refto="pango-sharp, Version=2.0.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+			</References>
 	
 			<Files>
 				<File name = "application.java">

Added: trunk/MonoDevelop/Extras/JavaBinding/templates/IkvmLibraryProject.xpt.xml
===================================================================
--- trunk/MonoDevelop/Extras/JavaBinding/templates/IkvmLibraryProject.xpt.xml	2005-05-20 14:28:56 UTC (rev 2548)
+++ trunk/MonoDevelop/Extras/JavaBinding/templates/IkvmLibraryProject.xpt.xml	2005-05-20 14:37:15 UTC (rev 2549)
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<Template originator   = "John Luke" 
+          created      = "04/06/2004"
+          lastModified = "04/06/2004">
+	
+	<!-- Template Header -->
+	<TemplateConfiguration>
+		<_Name>IKVM Library</_Name>
+		<Category>Java</Category>
+		<Icon>Java.Project.DOSProject</Icon>
+		<LanguageName>Java</LanguageName>
+		<_Description>Create a Java library with IKVM</_Description>
+	</TemplateConfiguration>
+	
+	<!-- Actions -->
+	<Actions>
+		<Open filename = "MyClass.java"/>
+	</Actions>
+
+	<!-- Template Content -->
+	<Combine name = "${ProjectName}" directory = ".">
+		<Options>
+			<StartupProject>${ProjectName}</StartupProject>
+		</Options>
+		
+		<Project name = "${ProjectName}" directory = ".">
+			<References>
+				<Reference type="Gac" refto="gtk-sharp, Version=2.0.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+				<Reference type="Gac" refto="gdk-sharp, Version=2.0.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+				<Reference type="Gac" refto="glib-sharp, Version=2.0.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+				<Reference type="Gac" refto="atk-sharp, Version=2.0.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+			</References>
+			
+			<Options Target = "Library" PauseConsoleOutput = "False" />
+	
+			<Files>
+				<File name = "MyClass.java">
+<![CDATA[/*
+ * MyClass.java
+ *
+ * created on ${Date} at ${Time}
+ */
+
+public class MyClass
+{
+}]]></File>		
+			</Files>
+		</Project>
+	</Combine>
+</Template>




More information about the Monodevelop-patches-list mailing list