--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <meta http-equiv="content-type"
+ content="text/html; charset=ISO-8859-1">
+ <title>Tutorial of developing and changing QuantumDb</title>
+</head>
+<body>
+Author: jparrai<br>
+Date: 28-03-2003<br>
+Subject: Tutorial of developing and changing QuantumDb<br>
+<br>
+To modify the quantumdb plug-in, first you get it to a development
+system, usually Eclipse itself.<br>
+<h3> 1. Getting the project from CVS.<br>
+</h3>
+First you go to <span style="font-weight: bold;">Open a Perspective</span>
+and open the <span style="font-weight: bold;">CVS repository exploring
+perspective</span>. It can be in the <span style="font-weight: bold;">Others...</span>.
+You get a perspective. You right-click on the <span
+ style="font-weight: bold;">CVS Repositories</span> view and create a <span
+ style="font-weight: bold;">New -> Repository Location...</span><br>
+The data to access quantum is:<br>
+<br>
+Host: <span style="font-weight: bold;">cvs.sourceforge.net</span><br>
+Repository Path: <span style="font-weight: bold;">/cvsroot/quantum</span><br>
+User: <span style="font-weight: bold;">anonymous</span><br>
+Password:<br>
+<br>
+There is no password for <span style="font-style: italic;">anonymous</span>.
+You can substitute the User and Password for you own, if you are
+registered in <a href="http://sourceforge.net">sourcefoge.net</a>. If
+you want developer access, remember to use <span
+ style="font-style: italic;">extssh</span> as the connexion type, so as
+to be able to update the cvs repository with your changes (that need a
+ssh connection in <a href="http://sourceforge.net">sourceforge</a>)<br>
+<br>
+After that, if you are connected to the Net, you will be able to get
+the project files. You will see a <span style="font-weight: bold;">HEAD</span>
+sub-item, a <span style="font-weight: bold;">Branches</span>, and a <span
+ style="font-weight: bold;">Versions</span>. You select the <span
+ style="font-weight: bold;">HEAD</span>, and then right-click onto <span
+ style="font-weight: bold;">quantum-plugin</span>. Then select <span
+ style="font-weight: bold;">Check Out As...</span>. You cannot check it
+out as a Project, because some files are not present, mainly the <span
+ style="font-style: italic;">.project</span> and <span
+ style="font-style: italic;">.classpath</span>.<br>
+<br>
+<h3> 2. Configuring the project.<br>
+</h3>
+So you "Check Out As..." and select an Plug-In project, call it as you
+wish, (I will use "com.quantum") and then select an Empty Plug In. If
+everything goes ok, you should end with a new project and about 1600
+errors. The errors are caused because you have now a default classpath,
+and the quantumdb project uses some plug-ins, so these plug-ins
+directories must be referenced.<br>
+<br>
+My classpath for Eclipse 2.0 is as follows:<br>
+<br>
+<span style="font-family: monospace;"><nobr> <?xml version="1.0"
+encoding="UTF-8"?></nobr></span><br style="font-family: monospace;">
+<span style="font-family: monospace;"><nobr> <classpath></nobr></span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;"><nobr>
+<classpathentry kind="src" path="src"/></nobr></span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;"><nobr>
+<classpathentry kind="var" path="JRE_LIB" rootpath="JRE_SRCROOT"
+sourcepath="JRE_SRC"/></nobr></span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;"><nobr>
+<classpathentry kind="lib"</nobr></span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;"><nobr>
+
+path="C:/Parsec/eclipse/plugins/org.eclipse.core.boot_2.0.2/boot.jar"
+sourcepath="C:/Parsec/eclipse/plugins/org.eclipse.platform.source_2.0.2/src/org.eclipse.core.boot_2.0.2/bootsrc.zip"/></nobr></span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;"><nobr>
+<classpathentry kind="lib"</nobr></span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;"><nobr>
+
+path="C:/Parsec/eclipse/plugins/org.eclipse.core.runtime_2.0.2/runtime.jar"
+sourcepath="C:/Parsec/eclipse/plugins/org.eclipse.platform.source_2.0.2/src/org.eclipse.core.runtime_2.0.2/runtimesrc.zip"/></nobr></span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;"><nobr>
+<classpathentry kind="lib"</nobr></span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;"><nobr>
+
+path="C:/Parsec/eclipse/plugins/org.eclipse.core.resources_2.0.1/resources.jar"
+sourcepath="C:/Parsec/eclipse/plugins/org.eclipse.platform.source_2.0.2/src/org.eclipse.core.resources_2.0.1/resourcessrc.zip"/></nobr></span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;"><nobr>
+<classpathentry kind="lib"</nobr></span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;"><nobr>
+
+path="C:/Parsec/eclipse/plugins/org.eclipse.swt.win32_2.0.2/ws/win32/swt.jar"
+sourcepath="C:/Parsec/eclipse/plugins/org.eclipse.platform.win32.source_2.0.2/src/org.eclipse.swt.win32_2.0.2/ws/win32/swtsrc.zip"/></nobr></span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;"><nobr>
+<classpathentry kind="lib"</nobr></span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;"><nobr>
+
+path="C:/Parsec/eclipse/plugins/org.eclipse.ui_2.0.2/workbench.jar"
+sourcepath="C:/Parsec/eclipse/plugins/org.eclipse.platform.source_2.0.2/src/org.eclipse.ui_2.0.2/workbenchsrc.zip"/></nobr></span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;"><nobr>
+<classpathentry kind="lib"</nobr></span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;"><nobr>
+
+path="C:/Parsec/eclipse/plugins/org.eclipse.ui.win32_2.0.0/workbenchwin32.jar"</nobr></span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;"><nobr>
+ rootpath=""
+sourcepath="C:/Parsec/eclipse/plugins/org.eclipse.platform.win32.source_2.0.2/src/org.eclipse.ui.win32_2.0.0/workbenchwin32src.zip"/></nobr></span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;"><nobr>
+<classpathentry kind="output" path="bin"/></nobr></span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;"><nobr> </classpath></nobr></span><br
+ style="font-family: monospace;">
+<br>
+Where, as you can see, my Eclipse home is <span
+ style="font-family: monospace;">C:\Parsec\eclipse</span>. In any case,
+you need to reference those plug-ins you see below, from org.eclipse:<br>
+<ul>
+ <li> core.boot</li>
+ <li> core.runtime</li>
+ <li> core.resources</li>
+ <li> ui</li>
+ <li> swt.win32 (substitute by your platform)</li>
+ <li> ui.win32 (substitute by your platform)</li>
+</ul>
+<p><br>
+ Remember after changing manually the <span style="font-style: italic;">.classpath</span>
+ file that you have to <span style="font-weight: bold;">Refresh</span> the project
+ to take the changes in.<br>
+ <br>
+ If you want to reference those plug-ins using the workspace, select <span
+ style="font-weight: bold;">Properties </span>from the newly created <span
+ style="font-weight: bold;">com.quantum</span> project and go to <span
+ style="font-weight: bold;">Java Build Path</span>, then <span
+ style="font-weight: bold;">Libraries </span>tab, and select the <span
+ style="font-weight: bold;">.jar</span> files the project needs.<br>
+ <br>
+ It should now build without errors.<br>
+ <br>
+ In Eclipse 2.1 that won't work. Dependencies amongs plug-ins have changed and
+ instead of redoing all of them again I chose to use the new "classpath container"
+ facility. When I say that won't work I mean if linking against the 2.1 libraries.
+ If you link against the 2.0 libraries will work all right.<br>
+</p>
+<p>The libraries for 2.1 are as follows (I copy my classpath) :</p>
+<p><font face="Courier New, Courier, mono"><classpath><br>
+ <classpathentry kind="src" path="src"/><br>
+ <classpathentry kind="var"<br>
+ path="ECLIPSE_HOME/plugins/org.eclipse.core.boot_2.1.0/boot.jar" sourcepath="ORG_ECLIPSE_PLATFORM_SOURCE_SRC/org.eclipse.core.boot_2.1.0/bootsrc.zip"/><br>
+ <classpathentry kind="var"<br>
+ path="ECLIPSE_HOME/plugins/org.eclipse.core.runtime_2.1.0/runtime.jar"
+ sourcepath="ORG_ECLIPSE_PLATFORM_SOURCE_SRC/org.eclipse.core.runtime_2.1.0/runtimesrc.zip"/><br>
+ <classpathentry kind="var"<br>
+ path="ECLIPSE_HOME/plugins/org.eclipse.core.resources_2.1.0/resources.jar"
+ sourcepath="ORG_ECLIPSE_PLATFORM_SOURCE_SRC/org.eclipse.core.resources_2.1.0/resourcessrc.zip"/><br>
+ <classpathentry kind="var"<br>
+ path="ECLIPSE_HOME/plugins/org.eclipse.swt.win32_2.1.0/ws/win32/swt.jar"
+ sourcepath="ORG_ECLIPSE_PLATFORM_WIN32_SOURCE_SRC/org.eclipse.swt.win32_2.1.0/ws/win32/swtsrc.zip"/><br>
+ <classpathentry kind="var"<br>
+ path="ECLIPSE_HOME/plugins/org.eclipse.ui_2.1.0/ui.jar" sourcepath="ORG_ECLIPSE_PLATFORM_SOURCE_SRC/org.eclipse.ui_2.1.0/uisrc.zip"/><br>
+ <classpathentry kind="var"<br>
+ path="ECLIPSE_HOME/plugins/org.eclipse.text_2.1.0/text.jar" sourcepath="ORG_ECLIPSE_PLATFORM_SOURCE_SRC/org.eclipse.text_2.1.0/textsrc.zip"/><br>
+ <classpathentry kind="var"<br>
+ path="ECLIPSE_HOME/plugins/org.eclipse.jface_2.1.0/jface.jar" sourcepath="ORG_ECLIPSE_PLATFORM_SOURCE_SRC/org.eclipse.jface_2.1.0/jfacesrc.zip"/><br>
+ <classpathentry kind="var"<br>
+ path="ECLIPSE_HOME/plugins/org.eclipse.jface.text_2.1.0/jfacetext.jar"
+ sourcepath="ORG_ECLIPSE_PLATFORM_SOURCE_SRC/org.eclipse.jface.text_2.1.0/jfacetextsrc.zip"/><br>
+ <classpathentry kind="var"<br>
+ path="ECLIPSE_HOME/plugins/org.eclipse.ui.views_2.1.0/views.jar" sourcepath="ORG_ECLIPSE_PLATFORM_SOURCE_SRC/org.eclipse.ui.views_2.1.0/viewssrc.zip"/><br>
+ <classpathentry kind="var"<br>
+ path="ECLIPSE_HOME/plugins/org.eclipse.ui.workbench_2.1.0/workbench.jar"
+ sourcepath="ORG_ECLIPSE_PLATFORM_SOURCE_SRC/org.eclipse.ui.workbench_2.1.0/workbenchsrc.zip"/><br>
+ <classpathentry kind="var"<br>
+ path="ECLIPSE_HOME/plugins/org.eclipse.ui.win32_2.1.0/workbenchwin32.jar"
+ sourcepath="ORG_ECLIPSE_PLATFORM_WIN32_SOURCE_SRC/org.eclipse.ui.win32_2.1.0/workbenchwin32src.zip"/><br>
+ <classpathentry kind="var"<br>
+ path="ECLIPSE_HOME/plugins/org.eclipse.ui.workbench.texteditor_2.1.0/texteditor.jar"
+ sourcepath="ORG_ECLIPSE_PLATFORM_SOURCE_SRC/org.eclipse.ui.workbench.texteditor_2.1.0/texteditorsrc.zip"/><br>
+ <classpathentry kind="var"<br>
+ path="ECLIPSE_HOME/plugins/org.eclipse.ui.editors_2.1.0/editors.jar"
+ sourcepath="ORG_ECLIPSE_PLATFORM_SOURCE_SRC/org.eclipse.ui.editors_2.1.0/editorssrc.zip"/><br>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/><br>
+ <classpathentry kind="output" path="bin"/><br>
+ </classpath><br>
+ <br>
+ </font></p>
+<h3>3. Running the project.<br>
+</h3>
+First go to <span style="font-weight: bold;">Window -> Preferences
+-> Plug-in Development -> Target Platform</span> and to select all
+the plug-ins that should be used when running a platform from the
+plug-in development. I select all of them not in the workspace because I
+don't want to resolve all the cross-references.<br>
+<br>
+Then go to <span style="font-weight: bold;">Run -> Run As ->
+Run-time Workbench</span>. If all is well, a new workbench should
+appear, that has you just-compiled quantum plug-in installed. To check
+it, open the quantumdb perspective (<span style="font-weight: bold;">Perspective
+Button -> Others... ->QuantumDb Perspective</span>), and see if
+it appears. This is not<br>
+the usual QuantumDb perspective, but the one you are developing. Of
+course, if you have made no change to the standard source, there is no
+difference. <br>
+<br>
+<h3>4. Making a small change.<br>
+</h3>
+To check that we are really using our modified QuantumDb, and not the
+standard, let's make a change. Open the <span
+ style="font-style: italic;">QuantumResources.properties</span> file,
+(in the <span style="font-weight: bold;">com.quantum</span> package),
+and modify the line<br>
+<br>
+<span style="font-family: monospace;"><nobr> bookmarkview.newBookmark =
+New Bookmark...</nobr></span><br>
+<br>
+to <br>
+<br>
+<span style="font-family: monospace;"><nobr> bookmarkview.newBookmark =
+Add New Bookmark...</nobr></span><br>
+<br>
+(for example)<br>
+<br>
+Then Run the testing workbench again, you can now use simply <span
+ style="font-weight: bold;">Ctrl+F11</span> to run the last launched
+environment. Now, in the bookmark view, when you right-click on it, it
+should show your modified string. So you are now ready to change the
+plug-in.<br>
+<h3> 5. Creating a .jar file.<br>
+</h3>
+<p>You may simply want to make a <span style="font-style: italic;">.jar</span>
+ file from some configuration taken from the CVS, so as to have the latest version
+ available to you. You have to follow the same instructions as before for installation.
+ When it's installed and built, select the <span style="font-weight: bold;">com.quantum</span>
+ project, right-click on it and select <span style="font-weight: bold;">Export</span>.<br>
+ <br>
+ In Eclipse 2.0: Select <span style="font-weight: bold;">jar File</span> and
+ then choose a directory. The name of the jar file should be <span
+ style="font-weight: bold;">Quantum.jar</span> as that's the name stated in the
+ <span style="font-style: italic;">plugin.xml</span> file.<br>
+ <br>
+ To install this jar file as a plug-in, create a directory called <span
+ style="font-style: italic;">com.quantum</span> in the directory <span
+ style="font-style: italic;">plugins</span> under your local Eclipse installation
+ directory. Copy the jar file to that directory, and uncompress it (without deleting
+ it) into that same directory. In fact, I think you only need the <span style="font-style: italic;">icons</span>
+ directory and the <span style="font-style: italic;">plugin.xlm</span>, but you
+ can leave the rest of the files so they feel not so alone.<br>
+ <br>
+ You close your Eclipse IDE and open it up again, and the QuantumDB perspective
+ should be available.<br>
+</p>
+<h3>6. Uploading the change to CVS.</h3>
+<p>(I copy directly from the Eclipse Help, so as to have all the info in the same
+ place) </p>
+<h4>Synchronizing with a CVS repository</h4>
+<p><br>
+ In the CVS team programming environment, there are two distinct processes involved
+ in synchronizing resources: updating with the latest changes from a branch and
+ committing to the branch. </p>
+<p>When you make changes in the Workbench, the resources are saved locally. Eventually
+ you will want to commit your changes to the branch so others can have access
+ to them. Meanwhile, others may have committed changes to the branch. You will
+ want to update your Workbench resources with their changes.</p>
+<p>Important!: It is preferable to update before committing, in case there are
+ conflicts with the resources in your Workbench and the resources currently in
+ the branch. </p>
+<p>The synchronize view contains filters to control whether you want to view only
+ incoming changes or outgoing changes. Incoming changes come from the branch.
+ If accepted, they will update the Workbench resource to the latest version currently
+ committed into the branch. Outgoing changes come from the Workbench. If committed,
+ they will change the branch resources to match those currently present in the
+ Workbench. </p>
+<p>Regardless of which mode (filter) you select, the Synchronize view always shows
+ you conflicts that arise when you have locally modified a resource for which
+ a more recent version is available in the branch. In this situation you can
+ choose to do one of three things: update the resource from the branch, commit
+ your version of the resource to the branch ,or merge your work with the changes
+ in the branch resource. Typically you will want to merge, as the other two options
+ will result in loss of work. </p>
+<p>(End of copy from Eclipse Help, there are lots more, just go there and have
+ a look) Basically to get all the changes since the last time you took the sources,
+ then accept all the files that have changed in the CVS and you haven't touched.
+ If there are some that you have touched and are also touched by someone else
+ at CVS then you have to inspect the changes, see if they conflict with yours,
+ and merge both until you have a working set. Then you can upload that "working"
+ set to CVS. That's more or less the idea.</p>
+</body>
+</html>