Skip to content

Commit a44b542

Browse files
authored
Merge pull request oracle-samples#33 from bjeffrie/master
18.1 Update for SQL Developer Example Extensions plus extended set up / tutorial guide
2 parents e291c33 + 35319b2 commit a44b542

21 files changed

+178
-24
lines changed

sqldeveloper/extension/.classpath

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,6 @@
88
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
99
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/FXDiagram 0.35.0-SNAPSHOT"/>
1010
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/KIELER KLay Layouters v. 2015.02"/>
11-
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/SQLDeveloper 4.2"/>
11+
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/SQLDeveloper 18.1"/>
1212
<classpathentry kind="output" path="built/classes"/>
1313
</classpath>

sqldeveloper/extension/README.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,14 @@ Depending on requirements, this can be done in either XML or java and deployed b
66

77
### Contents
88

9+
* [Set Up / Tutorial](./setup.md) - A step by step guide to building your first extension and check for updates bundle.
10+
11+
912
* ["Simple" User Extensions (XML)](xml)
13+
14+
1015
* [Standard Extensions (java)](java)
16+
17+
1118
* [Check For Updates (cfu)](cfu)
1219

sqldeveloper/extension/build.properties

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
# Where sqldev lives. The directory that sqldeveloper/bin is in.
66
# This is where the builds will deploy the extension
77
# and where we can find our dependencies
8-
sqldev.dir=D:/sqldeveloper-4.2.0.17.089.1709/sqldeveloper
8+
#sqldev.dir=D:/sqldeveloper-4.2.0.17.089.1709/sqldeveloper
9+
sqldev.dir=D:/sqldeveloper-18.1.0/sqldeveloper
910

1011
# Information about the company or person creating the extension
1112
extension.owner=Oracle Examples

sqldeveloper/extension/buildtools/ant/classpaths.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,8 @@ limitations under the License.
107107

108108
<!-- osgi.bundle.utils-nodeps -->
109109
<property name="osgi.bundle.utils-nodeps" value="oracle.sqldeveloper.utils-nodeps" />
110-
<property name="dbtools.common.jarfile" value="oracle.dbtools-common.jar"/>
110+
<!-- 4.2 <property name="dbtools.common.jarfile" value="oracle.dbtools-common.jar"/> -->
111+
<property name="dbtools.common.jarfile" value="dbtools-common.jar"/>
111112
<path id="oracle.sqldeveloper.utils-nodeps">
112113
<pathelement location="${sqldev.lib}/${dbtools.common.jarfile}" />
113114
</path>

sqldeveloper/extension/cfu/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# SQL Developer Examples
22
## Check For Updates (cfu)
33
This is a bit of a table of contents trick to bring cfu closer to the top.
4-
Go to one of the projects and run the cfu ant task. The results will be in the built/cfu directory in the project.
4+
Go to one of the projects and run the _cfu ant task. The results will be in the built/cfu directory in the project.
55
* [Packaged XML extension](../xml/packaged)
66
* [Java extension](../java/DependencyExample)
Loading
75.9 KB
Loading

sqldeveloper/extension/java/ContextMenuAction/build.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
extension.id=oracle.db.example.sqldeveloper.extension.contextMenuAction
22
extension.name=Context Menu Action
33
extension.descr=Example context menu action on FUNCTION, PROCEURE code editor to insert static string
4-
extension.version=1.0.0
4+
extension.version=18.1.0
55
extension.resources=oracle.db.example.sqldeveloper.extension.contextMenuAction.ExtensionResources
66

77
extension.lib=external:$oracle.fcp.home$/sqldeveloper/extensions/${extension.id}/lib

sqldeveloper/extension/java/DependencyExample/DependencyExample.userlibraries

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<eclipse-userlibraries version="2">
33
<library name="FXDiagram 0.35.0-SNAPSHOT" systemlibrary="false">
44
<archive path="/extension/java/DependencyExample/lib/com.google.guava-15.0.0.v201403281430.jar"/>
5-
<archive path="/extension/java/DependencyExample/lib/de.cau.cs.kieler.kiml.graphviz.layouter-0.7.0.201506231527.jar"/>
5+
<archive path="/extension/java/DependencyExample/lib/de.cau.cs.kieler.kiml.graphviz.dot-0.7.1.201612130921.jar"/>
66
<archive path="/extension/java/DependencyExample/lib/de.fxdiagram.annotations-0.35.0-SNAPSHOT.jar"/>
77
<archive path="/extension/java/DependencyExample/lib/de.fxdiagram.core-0.35.0-SNAPSHOT.jar"/>
88
<archive path="/extension/java/DependencyExample/lib/de.fxdiagram.external-0.35.0-SNAPSHOT.jar"/>
Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,36 @@
11
# SQL Developer Examples
22
## DependencyExample
3-
This example is built with ant but is also set up for editing & (remote) debugging in the eclipse extension project.
3+
This example is built with ant but is also set up for editing & (remote) debugging in the eclipse extension project.
44
* Building this example requires two external libraries. Copy the required jar files to DependencyExample/lib.
55
The exact jars needed from them can be found in *DependencyExample/DependencyExample.userlibraries* which you will also need to import to use eclipse.
6-
* [FXDiagram 0.35.0](http://dl.bintray.com/jankoehnlein/FXDiagram/standalone/:fxdiagram-jars-0.35.0.zip "fxdiagram-jars-0.35.0.zip")
6+
* [FXDiagram 0.35.0](http://dl.bintray.com/jankoehnlein/FXDiagram/standalone/fxdiagram-jars-0.35.0.zip "fxdiagram-jars-0.35.0.zip")
77
* [KIELER KLay Layouters 0.14.0](http://rtsys.informatik.uni-kiel.de/~kieler/files/release_pragmatics_2015-02/klay/klay_2015-02.jar "klay_2015-02.jar")
88

99
[Set up your environment](../../setup.md), get the required libraries (see above), build the (default) deploy target, and start SQLDeveloper from the command line WITH THE (sqldeveloper/bin/)sqldeveloper -clean OPTION.
1010

1111
On the first run, only the triggers defined in extension.xml will load.
12+
1213
![DependencyExampleAbout diagram](images/DependencyExampleAbout.png)
14+
1315
In our case, that means the context menu entry only and NOT the dependency viewer tab referenced in the hook section (via DependencyExampleGraphViewer.xml which is in the directory the hook says to load xml from)
16+
1417
![DependencyExampleContextMenu diagram](images/DependencyExampleContextMenu.png)
18+
1519
Which opens the dependency diagram AND causes the rest of the extension hooks to load. (The editor tab name is pulled from the 1st selected node but will switch when focus goes to another editor and back. TODO: This really should be implemented as it's own dockable, not as an 'editor'.)
20+
1621
![DependencyExampleZoomedOut diagram](images/DependencyExampleZoomedOut.png)
17-
the diagram is scrollable, zoomable, editable, and can be exported to svg (all thanks to the FXDiagram library.) Double clicking on a node performs a "DrillLink" to open the SQL Developer editor for that node.
22+
23+
The diagram is scrollable, zoomable, editable, and can be exported to svg (all thanks to the FXDiagram library.)
24+
Controls:
25+
* Scroll with mouse wheel
26+
* Zoom with Ctrl + mouse wheel
27+
* Select with left click, Ctrl+left click to add to selection, or draw bounding box with mouse
28+
* Move nodes / selection / diagram by holding down right mouse button & dragging. Left button also works for node / selection
29+
* Double clicking on a node performs a "DrillLink" to open the SQL Developer editor for that node.
30+
* Right click brings up context menu. Hover over icons to see what is available. Note that do / undo refer to changes made to the diagram since opening it.
31+
1832
![DependencyExampleZoomedIn diagram](images/DependencyExampleZoomedIn.png)
33+
1934
Now that it is fully loaded, the viewer definition is active and a dependency graph tab is added to the object viewers. (The next time a new one is opened.)
35+
2036
![DependencyExampleViewer diagram](images/DependencyExampleViewer.png)

sqldeveloper/extension/java/DependencyExample/build.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
extension.id=oracle.db.example.sqldeveloper.extension.dependency
22
extension.name=Example Dependency Viewer
33
extension.descr=Object viewer(s) for dependency analysis
4-
extension.version=1.0.0
4+
extension.version=18.1.0
55
extension.resources=oracle.db.example.sqldeveloper.extension.dependency.DependencyExampleResources
66
# Note that there are attribution and potential license requirements if you DISTRIBUTE
77
# this example with the third party libraries included.

sqldeveloper/extension/java/DependencyExample/src/oracle/db/example/sqldeveloper/extension/dependency/DependencyExampleController.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@ private Editor openEditor(Context context) {
113113
*/
114114
@Override
115115
public boolean update(IdeAction action, Context context) {
116+
action.setEnabled(true);
116117
return true;
117118
}
118119

sqldeveloper/extension/java/DependencyExample/src/oracle/db/example/sqldeveloper/extension/dependency/control/DependencyExampleFxControl.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
import oracle.dbtools.raptor.ui.URLFileChooser;
4646
import oracle.dbtools.util.Logger;
4747
import oracle.ide.Ide;
48+
import oracle.ide.controls.WaitCursor;
4849

4950
/**
5051
* DependencyExampleFxControl an javaFX custom control to contain the vworkflow UI
@@ -183,14 +184,18 @@ public DependencyExampleModel getViewModel() {
183184

184185
/**
185186
* @param aViewModel the viewModel to set
187+
* @param waitCursor
186188
*/
187-
public void setViewModel(DependencyExampleModel aViewModel) {
189+
public void setViewModel(DependencyExampleModel aViewModel, final WaitCursor waitCursor) {
188190
viewModel = aViewModel;
189191
Platform.runLater(() -> {
190192
getViewModel().load();
191193
updateUI();
192194
diagram.applyCss();
193195
diagram.layout();
196+
SwingUtilities.invokeLater(() -> {
197+
waitCursor.hide();
198+
});
194199
});
195200
}
196201

sqldeveloper/extension/java/DependencyExample/src/oracle/db/example/sqldeveloper/extension/dependency/control/FxDiagram.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,6 @@ Everyone is permitted to copy and distribute copies of this Agreement, but in or
112112
import javafx.collections.ObservableList;
113113
import javafx.event.EventHandler;
114114
import javafx.geometry.Insets;
115-
import javafx.scene.Cursor;
116115
import javafx.scene.input.KeyEvent;
117116
import javafx.scene.input.MouseButton;
118117
import javafx.scene.input.MouseEvent;
@@ -239,17 +238,12 @@ public void handle(MouseEvent event) {
239238
lastClickTime = now;
240239
}
241240
if (MouseButton.PRIMARY == event.getButton() && timeBetween < doubleClickThreshold) {
242-
setCursor(Cursor.WAIT);
243241
SwingUtilities.invokeLater(() -> {
244242
try {
245243
model.performDrill(key);
246244
} catch (Exception e) {
247245
String msg = DependencyExampleResources.format(DependencyExampleResources.DependencyExampleFxControl_drillLink_fail, key);
248246
Logger.warn(FxDiagram.class, msg, e);
249-
} finally {
250-
Platform.runLater(() -> {
251-
FxDiagram.this.setCursor(Cursor.DEFAULT);
252-
});
253247
}
254248
});
255249
} else {

sqldeveloper/extension/java/DependencyExample/src/oracle/db/example/sqldeveloper/extension/dependency/viewer/DependencyExampleGraphViewer.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import java.awt.BorderLayout;
2020
import java.awt.Component;
21+
import java.awt.Cursor;
2122
import java.util.Collections;
2223

2324
import javafx.application.Platform;
@@ -48,6 +49,7 @@
4849
import oracle.dbtools.util.Logger;
4950
import oracle.ide.Context;
5051
import oracle.ide.Ide;
52+
import oracle.ide.controls.WaitCursor;
5153
import oracle.ide.editor.AsynchronousEditor;
5254
import oracle.ide.editor.EditorManager;
5355
import oracle.ide.model.UpdateMessage;
@@ -210,7 +212,7 @@ private void initFX(JFXPanel fxPanel) {
210212
try {
211213
dependencyExampleFxControl = new DependencyExampleFxControl();
212214
Scene scene = SceneFactory.createScene(dependencyExampleFxControl.getRoot());
213-
scene.setCamera(new PerspectiveCamera());
215+
// GPU turned off in sqldev 18.1 scene.setCamera(new PerspectiveCamera());
214216
fxPanel.setScene(scene);
215217
}
216218
catch(Exception e) {
@@ -230,6 +232,8 @@ private void loadContentModel(Context context) {
230232
return;
231233
}
232234
}
235+
final WaitCursor waitCursor = new WaitCursor(Ide.getMainWindow());
236+
waitCursor.show();
233237
dbObject = new DBObject(context.getNode());
234238
multipleSelections = context.getSelection().length > 1;
235239
dependencyModel = new DependencyExampleModel(context);
@@ -245,7 +249,9 @@ protected Object doWork() throws TaskException {
245249
@Override
246250
protected void invokeLater() {
247251
// This is only called if the task finishes and is on the UI thread
248-
dependencyExampleFxControl.setViewModel(dependencyModel);
252+
dependencyExampleFxControl.setViewModel(dependencyModel, waitCursor);
253+
// Force update UI
254+
EditorManager.getEditorManager().refreshEditorUI(DependencyExampleGraphViewer.this);
249255
}
250256

251257
@Override

sqldeveloper/extension/java/DumpObjectTypesAction/build.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
extension.id=oracle.db.example.sqldeveloper.extension.dumpObjectTypes
22
extension.name=Dump Object Types Action
33
extension.descr=Object action to dump an object type list as INFO to log window.
4-
extension.version=1.0.0
4+
extension.version=18.1.0
55
extension.resources=oracle.db.example.sqldeveloper.extension.dumpObjectTypes.DumpObjectTypesResources
66

77
extension.lib=external:$oracle.fcp.home$/sqldeveloper/extensions/${extension.id}/lib

sqldeveloper/extension/java/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
## Standard Extensions (java)
33
Standard extensions are jar files with an [OSGi](https://en.wikipedia.org/wiki/OSGi) manifest and an extension.xml defining the extension and how it integrates with SQL Developer.
44

5-
[Set up your environment](../setup.md). If using the eclipse project, also modify paths in *SQLDeveloper4.2.userlibraries* and import into eclipse.
5+
[Set up your environment](../setup.md). If using the eclipse project, also modify paths in *SQLDeveloper18.1.userlibraries* and import into eclipse.
66

77
* [packaged XML](../xml/packaged)
88
XML Examples packaged as an extension.jar
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2+
<eclipse-userlibraries version="2">
3+
<library name="FXDiagram 0.35.0-SNAPSHOT" systemlibrary="false">
4+
<archive path="/extension/java/DependencyExample/lib/com.google.guava-15.0.0.v201403281430.jar"/>
5+
<archive path="/extension/java/DependencyExample/lib/de.fxdiagram.annotations-0.35.0-SNAPSHOT.jar"/>
6+
<archive path="/extension/java/DependencyExample/lib/de.fxdiagram.core-0.35.0-SNAPSHOT.jar"/>
7+
<archive path="/extension/java/DependencyExample/lib/de.fxdiagram.external-0.35.0-SNAPSHOT.jar"/>
8+
<archive path="/extension/java/DependencyExample/lib/de.fxdiagram.lib-0.35.0-SNAPSHOT.jar"/>
9+
<archive path="/extension/java/DependencyExample/lib/org.eclipse.emf.common-2.11.1.v20160208-0816.jar"/>
10+
<archive path="/extension/java/DependencyExample/lib/org.eclipse.emf.ecore-2.11.2.v20160208-0816.jar"/>
11+
<archive path="/extension/java/DependencyExample/lib/org.eclipse.emf.ecore.xmi-2.11.1.v20160208-0816.jar"/>
12+
<archive path="/extension/java/DependencyExample/lib/org.eclipse.xtend.lib-2.10.0.v201605250459.jar"/>
13+
<archive path="/extension/java/DependencyExample/lib/org.eclipse.xtext.xbase.lib-2.10.0.v201605250459.jar"/>
14+
<archive path="/extension/java/DependencyExample/lib/de.cau.cs.kieler.kiml.graphviz.dot-0.7.1.201612130921.jar"/>
15+
</library>
16+
<library name="KIELER KLay Layouters v. 2015.02" systemlibrary="false">
17+
<archive path="/extension/java/DependencyExample/lib/klay_2015-02.jar"/>
18+
</library>
19+
<library name="SQLDeveloper 18.1" systemlibrary="false">
20+
<archive path="D:/sqldeveloper-18.1.0/sqldeveloper/ide/extensions/oracle.ide.db.jar"/>
21+
<archive path="D:/sqldeveloper-18.1.0/sqldeveloper/ide/extensions/oracle.ide.jar" source="D:/workspace2/raptor_18.1/raptorbase-src.latest.jar"/>
22+
<archive path="D:/sqldeveloper-18.1.0/sqldeveloper/ide/lib/idert.jar" source="D:/workspace2/raptor_18.1/raptorbase-src.latest.jar"/>
23+
<archive path="D:/sqldeveloper-18.1.0/sqldeveloper/ide/lib/javatools.jar"/>
24+
<archive path="D:/sqldeveloper-18.1.0/sqldeveloper/modules/oracle.javatools/javatools-nodeps.jar"/>
25+
<archive path="D:/sqldeveloper-18.1.0/sqldeveloper/modules/oracle.javatools/oicons.jar"/>
26+
<archive path="D:/sqldeveloper-18.1.0/sqldeveloper/sqldeveloper/extensions/oracle.sqldeveloper.jar"/>
27+
<archive path="D:/sqldeveloper-18.1.0/sqldeveloper/sqldeveloper/extensions/oracle.sqldeveloper.utils.jar"/>
28+
<archive path="D:/sqldeveloper-18.1.0/sqldeveloper/sqldeveloper/lib/dbtools-common.jar"/>
29+
<archive path="D:/sqldeveloper-18.1.0/sqldeveloper/sqldeveloper/lib/oracle.sqldeveloper.jfx-nodeps.jar"/>
30+
</library>
31+
<library name="SQLDeveloper 4.2" systemlibrary="false">
32+
<archive path="D:/sqldeveloper-4.2.0.17.089.1709/sqldeveloper/ide/extensions/oracle.ide.db.jar"/>
33+
<archive path="D:/sqldeveloper-4.2.0.17.089.1709/sqldeveloper/ide/extensions/oracle.ide.jar"/>
34+
<archive path="D:/sqldeveloper-4.2.0.17.089.1709/sqldeveloper/ide/lib/idert.jar"/>
35+
<archive path="D:/sqldeveloper-4.2.0.17.089.1709/sqldeveloper/ide/lib/javatools.jar"/>
36+
<archive path="D:/sqldeveloper-4.2.0.17.089.1709/sqldeveloper/modules/oracle.javatools/javatools-nodeps.jar"/>
37+
<archive path="D:/sqldeveloper-4.2.0.17.089.1709/sqldeveloper/modules/oracle.javatools/oicons.jar"/>
38+
<archive path="D:/sqldeveloper-4.2.0.17.089.1709/sqldeveloper/sqldeveloper/extensions/oracle.sqldeveloper.jar"/>
39+
<archive path="D:/sqldeveloper-4.2.0.17.089.1709/sqldeveloper/sqldeveloper/extensions/oracle.sqldeveloper.utils.jar"/>
40+
<archive path="D:/sqldeveloper-4.2.0.17.089.1709/sqldeveloper/sqldeveloper/lib/oracle.dbtools-common.jar"/>
41+
<archive path="D:/sqldeveloper-4.2.0.17.089.1709/sqldeveloper/sqldeveloper/lib/oracle.sqldeveloper.jfx-nodeps.jar"/>
42+
</library>
43+
</eclipse-userlibraries>

sqldeveloper/extension/setenv.bat

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
SET ANT_HOME=D:\apache-ant-1.10.3
2+
SET JAVA_HOME=C:\Program Files\Java\jdk1.8.0_152
3+
SET ANT_BIN=%ANT_HOME%\bin
4+
SET SQLDEV_BIN=D:\sqldeveloper-18.1.0\sqldeveloper\sqldeveloper\bin
5+
SET PATH=%PATH%;%ANT_BIN%;%SQLDEV_BIN%
6+

0 commit comments

Comments
 (0)