Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit d5cab8d

Browse files
add context menu for connection node, English and German resource bundles
1 parent 6f53860 commit d5cab8d

File tree

8 files changed

+151
-45
lines changed

8 files changed

+151
-45
lines changed

sqldev/extension.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@
1515

1616
<trigger-hooks xmlns="http://xmlns.oracle.com/ide/extension">
1717
<triggers>
18+
<sqldev-action-hook xmlns="http://xmlns.oracle.com/sqldeveloper/sqldev-actions">
19+
<actionDescriptor package="org.utplsql.sqldev.actions" />
20+
</sqldev-action-hook>
1821
<actions xmlns="http://xmlns.oracle.com/jdeveloper/1013/extension">
1922
<action id="utplsql.editor.test">
2023
<properties>

sqldev/pom.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -391,6 +391,8 @@
391391
org.utplsql.sqldev,
392392
org.utplsql.sqldev.editor.menu,
393393
org.utplsql.sqldev.model.preference,
394+
org.utplsql.sqldev.navigator.menu,
395+
org.utplsql.sqldev.actions,
394396
org.utplsql.sqldev.resources
395397
</Export-Package>
396398
<_exportcontents>
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
package org.utplsql.sqldev
2+
3+
import java.util.logging.Logger
4+
import javax.swing.JSplitPane
5+
import oracle.dbtools.raptor.utils.Connections
6+
import oracle.dbtools.worksheet.editor.OpenWorksheetWizard
7+
import oracle.dbtools.worksheet.editor.Worksheet
8+
import oracle.dbtools.worksheet.utils.WorksheetUtil
9+
import oracle.ide.Ide
10+
import oracle.ide.config.Preferences
11+
import oracle.ide.controller.IdeAction
12+
import org.utplsql.sqldev.model.preference.PreferenceModel
13+
import org.utplsql.sqldev.resources.UtplsqlResources
14+
15+
class UtplsqlWorksheet {
16+
private static val Logger logger = Logger.getLogger(UtplsqlWorksheet.name);
17+
18+
private var PreferenceModel preferences
19+
private var String connectionName
20+
private var String path
21+
22+
new(String path, String connectionName) {
23+
this.preferences = PreferenceModel.getInstance(Preferences.preferences);
24+
this.path = path
25+
setConnection(connectionName)
26+
}
27+
28+
private def setConnection(String connectionName) {
29+
if (connectionName !== null && preferences.unsharedWorksheet) {
30+
this.connectionName = Connections.instance.createPrivateConnection(connectionName)
31+
} else {
32+
this.connectionName = connectionName;
33+
}
34+
}
35+
36+
private def getCode() '''
37+
«IF preferences.resetPackage»
38+
EXECUTE dbms_session.reset_package;
39+
«ENDIF»
40+
SET SERVEROUTPUT ON SIZE 1000000
41+
«IF preferences.clearScreen»
42+
CLEAR SCREEN
43+
«ENDIF»
44+
EXECUTE ut.run('«path»');
45+
'''
46+
47+
private def openWorksheet() {
48+
val worksheet = OpenWorksheetWizard.openNewTempWorksheet(connectionName, code.toString) as Worksheet
49+
if (connectionName === null) {
50+
worksheet.comboConnection = null
51+
}
52+
WorksheetUtil.setWorksheetTabName(worksheet.context.node.URL, UtplsqlResources.getString("WORKSHEET_TITLE"))
53+
worksheet.context.node.markDirty(false)
54+
return worksheet
55+
}
56+
57+
private def resizeResultPanel(Worksheet worksheet) {
58+
Thread.sleep(200) // give script runner time to initiate result panel
59+
val splitPane = worksheet.selectedResultPanel?.GUI?.parent?.parent?.parent
60+
if (splitPane instanceof JSplitPane) {
61+
splitPane.dividerLocation = 0.15 // 15% for Worksheet, 85% for Script Output
62+
} else {
63+
logger.
64+
severe('''Could not adjust size of worksheet. Expected JSplitPane but got «splitPane?.class?.name».''')
65+
}
66+
}
67+
68+
private def runScript(Worksheet worksheet) {
69+
if (preferences.autoExecute) {
70+
Thread.sleep(100) // give worksheet time to initialize
71+
val action = Ide.getIdeActionMap.get(Ide.findCmdID("Worksheet.RunScript")) as IdeAction
72+
if (action !== null) {
73+
action.performAction(worksheet.context)
74+
worksheet.resizeResultPanel
75+
}
76+
}
77+
}
78+
79+
def runTest() {
80+
val worksheet = openWorksheet
81+
worksheet.runScript
82+
logger.fine('''utPLSQL test called for «path» in «connectionName».''')
83+
}
84+
85+
def runTestAsync() {
86+
val Runnable runnable = [|runTest]
87+
val thread = new Thread(runnable)
88+
thread.name = "utPLSQL run test"
89+
thread.start
90+
}
91+
92+
93+
}

sqldev/src/main/java/org/utplsql/sqldev/editor/menu/UtplsqlEditorController.xtend

Lines changed: 6 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -16,23 +16,16 @@ package org.utplsql.sqldev.editor.menu
1616

1717
import java.util.logging.Logger
1818
import javax.swing.JEditorPane
19-
import javax.swing.JSplitPane
2019
import oracle.dbtools.raptor.navigator.impl.DatabaseSourceNode
21-
import oracle.dbtools.raptor.utils.Connections
22-
import oracle.dbtools.worksheet.editor.OpenWorksheetWizard
2320
import oracle.dbtools.worksheet.editor.Worksheet
24-
import oracle.dbtools.worksheet.utils.WorksheetUtil
2521
import oracle.ide.Context
2622
import oracle.ide.Ide
27-
import oracle.ide.config.Preferences
2823
import oracle.ide.controller.Controller
2924
import oracle.ide.controller.IdeAction
3025
import oracle.ide.editor.Editor
3126
import oracle.ide.^extension.RegisteredByExtension
32-
import oracle.ide.model.Node
33-
import org.utplsql.sqldev.model.preference.PreferenceModel
27+
import org.utplsql.sqldev.UtplsqlWorksheet
3428
import org.utplsql.sqldev.parser.UtplsqlParser
35-
import org.utplsql.sqldev.resources.UtplsqlResources
3629

3730
@RegisteredByExtension("org.utplsql.sqldev")
3831
class UtplsqlEditorController implements Controller {
@@ -69,55 +62,23 @@ class UtplsqlEditorController implements Controller {
6962
}
7063

7164
def runTest(Context context) {
72-
logger.fine("Start utPLSQL test from editor.")
73-
logger.fine('''context.view is of type «context.view.class.name».''')
74-
logger.fine('''context.node is of type «context.node.class.name».''')
7565
val view = context.view
66+
val node = context.node
67+
logger.finer('''Run utPLSQL from editor with view «view.class.name» and node «node.class.name».''')
7668
if (view instanceof Editor) {
7769
val component = view.defaultFocusComponent
7870
if (component instanceof JEditorPane) {
7971
val parser = new UtplsqlParser(component.text)
8072
val position = component.caretPosition
73+
val path = parser.getPathAt(position)
8174
var String connectionName = null;
82-
val Node node = context.node
8375
if (node instanceof DatabaseSourceNode) {
8476
connectionName = node.connectionName
8577
} else if (view instanceof Worksheet) {
8678
connectionName = view.connectionName
8779
}
88-
val preferences = PreferenceModel.getInstance(Preferences.getPreferences());
89-
if (connectionName !== null && preferences.unsharedWorksheet) {
90-
connectionName = Connections.instance.createPrivateConnection(connectionName)
91-
}
92-
val code = '''
93-
«IF preferences.resetPackage»
94-
EXECUTE dbms_session.reset_package;
95-
«ENDIF»
96-
SET SERVEROUTPUT ON SIZE 1000000
97-
«IF preferences.clearScreen»
98-
CLEAR SCREEN
99-
«ENDIF»
100-
EXECUTE ut.run('«parser.getPathAt(position)»');
101-
'''
102-
val worksheet = OpenWorksheetWizard.openNewTempWorksheet(connectionName, code) as Worksheet
103-
if (connectionName === null) {
104-
worksheet.comboConnection = null
105-
}
106-
WorksheetUtil.setWorksheetTabName(worksheet.context.node.URL, UtplsqlResources.getString("WORKSHEET_TITLE"));
107-
worksheet.context.node.markDirty(false);
108-
if (preferences.autoExecute) {
109-
Thread.sleep(100) // give worksheet time to initialize
110-
val action = Ide.getIdeActionMap.get(Ide.findCmdID("Worksheet.RunScript")) as IdeAction
111-
action.performAction(worksheet.context)
112-
Thread.sleep(200) // give script runner time to initiate result panel
113-
val splitPane = worksheet.selectedResultPanel?.GUI?.parent?.parent?.parent as JSplitPane
114-
if (splitPane === null) {
115-
logger.severe("Could not adjust size of worksheet.")
116-
} else {
117-
splitPane.dividerLocation = 0.15 // 15% for Worksheet, 85% for Script Output
118-
}
119-
}
120-
logger.fine('''utPLSQL test called for code at cursor position «position».»''')
80+
val utPlsqlWorksheet = new UtplsqlWorksheet(path, connectionName)
81+
utPlsqlWorksheet.runTest
12182
}
12283
}
12384
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package org.utplsql.sqldev.navigator.menu
2+
3+
import java.util.logging.Logger
4+
import oracle.dbtools.raptor.dialogs.actions.AbstractMenuAction
5+
import org.utplsql.sqldev.UtplsqlWorksheet
6+
7+
class RunFromConnection extends AbstractMenuAction {
8+
private static final Logger logger = Logger.getLogger(RunFromConnection.name);
9+
10+
override launch() {
11+
logger.finer('''Run utPLSQL from Connection node.''')
12+
val utPlsqlWorksheet = new UtplsqlWorksheet(DBObject.schemaName, DBObject.connectionName)
13+
utPlsqlWorksheet.runTestAsync
14+
}
15+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<items xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xsi:schemaLocation="http://xmlns.oracle.com/sqldeveloper/3_1/dialogs
4+
http://xmlns.oracle.com/sqldeveloper/3_1/dialogs.xsd"
5+
xmlns="http://xmlns.oracle.com/sqldeveloper/3_1/dialogs">
6+
7+
<item connType="Oracle" type="CONNECTION" className="org.utplsql.sqldev.navigator.menu.RunFromConnection">
8+
<title>Run utPLSQL test</title>
9+
<iconName/>
10+
</item>
11+
</items>
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<?xml version = '1.0' encoding = 'utf-8'?>
2+
<xliff version="1.1">
3+
<file original="actions_in_connections_navigator.xml" source-language="en-US" datatype="SQLDeveloper" target-language="de-DE">
4+
<body>
5+
<trans-unit id="items_item_title_1">
6+
<source>Run utPLSQL test</source>
7+
<target>utPLSQL Test ausführen</target>
8+
</trans-unit>
9+
</body>
10+
</file>
11+
</xliff>
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# German resources for extension org.utplsql.sqldev
2+
3+
# Translatable text
4+
PREF_LABEL=utPLSQL
5+
PREF_UNSHARED_WORKSHEET_LABEL=Arbeitsblatt mit eigener Verbindung öffnen?
6+
PREF_RESET_PACKAGE_LABEL=Package vor der Ausführung von utPLSQL zurücksetzen?
7+
PREF_CLEAR_SCREEN_LABEL=Skriptausgabe-Fenster vor der Ausführung von utPLSQL leeren?
8+
PREF_AUTO_EXECUTE_LABEL=Unit Test automatisch ausführen?
9+
MENU_RUN_TEST_LABEL=utPLSQL Test ausführen
10+
WORKSHEET_TITLE=utPLSQL

0 commit comments

Comments
 (0)