Browse Source

init

tags/v1.1.0
Robin Thoni 7 years ago
commit
5899db5d8e

+ 57
- 0
.gitignore View File

@@ -0,0 +1,57 @@
1
+# Created by .ignore support plugin (hsz.mobi)
2
+### Java template
3
+*.class
4
+
5
+# Mobile Tools for Java (J2ME)
6
+.mtj.tmp/
7
+
8
+# Package Files #
9
+*.jar
10
+*.war
11
+*.ear
12
+
13
+# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
14
+hs_err_pid*
15
+
16
+# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
17
+# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
18
+
19
+# User-specific stuff:
20
+.idea/workspace.xml
21
+.idea/tasks.xml
22
+
23
+# Sensitive or high-churn files:
24
+.idea/dataSources/
25
+.idea/dataSources.ids
26
+.idea/dataSources.xml
27
+.idea/dataSources.local.xml
28
+.idea/sqlDataSources.xml
29
+.idea/dynamic.xml
30
+.idea/uiDesigner.xml
31
+
32
+# Gradle:
33
+.idea/gradle.xml
34
+.idea/libraries
35
+
36
+# Mongo Explorer plugin:
37
+.idea/mongoSettings.xml
38
+
39
+## File-based project format:
40
+*.iws
41
+
42
+## Plugin-specific files:
43
+
44
+# IntelliJ
45
+/out/
46
+
47
+# mpeltonen/sbt-idea plugin
48
+.idea_modules/
49
+
50
+# JIRA plugin
51
+atlassian-ide-plugin.xml
52
+
53
+# Crashlytics plugin (for Android Studio and IntelliJ)
54
+com_crashlytics_export_strings.xml
55
+crashlytics.properties
56
+crashlytics-build.properties
57
+fabric.properties

+ 22
- 0
.idea/compiler.xml View File

@@ -0,0 +1,22 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<project version="4">
3
+  <component name="CompilerConfiguration">
4
+    <resourceExtensions />
5
+    <wildcardResourcePatterns>
6
+      <entry name="!?*.java" />
7
+      <entry name="!?*.form" />
8
+      <entry name="!?*.class" />
9
+      <entry name="!?*.groovy" />
10
+      <entry name="!?*.scala" />
11
+      <entry name="!?*.flex" />
12
+      <entry name="!?*.kt" />
13
+      <entry name="!?*.clj" />
14
+      <entry name="!?*.aj" />
15
+    </wildcardResourcePatterns>
16
+    <annotationProcessing>
17
+      <profile default="true" name="Default" enabled="false">
18
+        <processorPath useClasspath="true" />
19
+      </profile>
20
+    </annotationProcessing>
21
+  </component>
22
+</project>

+ 3
- 0
.idea/copyright/profiles_settings.xml View File

@@ -0,0 +1,3 @@
1
+<component name="CopyrightManager">
2
+  <settings default="" />
3
+</component>

+ 26
- 0
.idea/misc.xml View File

@@ -0,0 +1,26 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<project version="4">
3
+  <component name="EntryPointsManager">
4
+    <entry_points version="2.0" />
5
+  </component>
6
+  <component name="MavenImportPreferences">
7
+    <option name="generalSettings">
8
+      <MavenGeneralSettings>
9
+        <option name="mavenHome" value="Bundled (Maven 3)" />
10
+      </MavenGeneralSettings>
11
+    </option>
12
+  </component>
13
+  <component name="ProjectLevelVcsManager" settingsEditedManually="false">
14
+    <OptionsSetting value="true" id="Add" />
15
+    <OptionsSetting value="true" id="Remove" />
16
+    <OptionsSetting value="true" id="Checkout" />
17
+    <OptionsSetting value="true" id="Update" />
18
+    <OptionsSetting value="true" id="Status" />
19
+    <OptionsSetting value="true" id="Edit" />
20
+    <ConfirmationsSetting value="0" id="Add" />
21
+    <ConfirmationsSetting value="0" id="Remove" />
22
+  </component>
23
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="IntelliJ IDEA RS-163.7608" project-jdk-type="IDEA JDK">
24
+    <output url="file://$PROJECT_DIR$/out" />
25
+  </component>
26
+</project>

+ 8
- 0
.idea/modules.xml View File

@@ -0,0 +1,8 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<project version="4">
3
+  <component name="ProjectModuleManager">
4
+    <modules>
5
+      <module fileurl="file://$PROJECT_DIR$/code-from-ds.iml" filepath="$PROJECT_DIR$/code-from-ds.iml" />
6
+    </modules>
7
+  </component>
8
+</project>

+ 13
- 0
code-from-ds.iml View File

@@ -0,0 +1,13 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<module type="PLUGIN_MODULE" version="4">
3
+  <component name="DevKit.ModuleBuildProperties" url="file://$MODULE_DIR$/resources/META-INF/plugin.xml" />
4
+  <component name="NewModuleRootManager" inherit-compiler-output="true">
5
+    <exclude-output />
6
+    <content url="file://$MODULE_DIR$">
7
+      <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
8
+      <sourceFolder url="file://$MODULE_DIR$/resources" type="java-resource" />
9
+    </content>
10
+    <orderEntry type="inheritedJdk" />
11
+    <orderEntry type="sourceFolder" forTests="false" />
12
+  </component>
13
+</module>

+ 37
- 0
resources/META-INF/plugin.xml View File

@@ -0,0 +1,37 @@
1
+<idea-plugin version="2">
2
+  <id>com.rthoni.intellij.codefromds</id>
3
+  <name>Code FROM ds</name>
4
+  <version>1.0</version>
5
+  <vendor email="robin@rthoni.com" url="https://www.rthoni.com">Robin Thoni</vendor>
6
+
7
+  <description><![CDATA[
8
+      Generate code from data sources
9
+    ]]></description>
10
+
11
+  <change-notes><![CDATA[
12
+      First version
13
+    ]]>
14
+  </change-notes>
15
+
16
+  <!-- please see http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/build_number_ranges.html for description -->
17
+  <idea-version since-build="141.0"/>
18
+
19
+  <!-- please see http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/plugin_compatibility.html
20
+       on how to target different products -->
21
+  <depends>com.intellij.modules.lang</depends>
22
+  <depends>com.intellij.database</depends>
23
+
24
+  <extensions defaultExtensionNs="com.intellij">
25
+    <!-- Add your extensions here -->
26
+  </extensions>
27
+
28
+  <actions>
29
+    <!-- Add your actions here -->
30
+    <action id="codefromds-generate" class="com.rthoni.intellij.codefromds.ui.actions.GenerateAction"
31
+            text="Generate code from data source" description="Generate models from an intellij data source">
32
+      <add-to-group group-id="ToolsMenu" anchor="last"/>
33
+      <keyboard-shortcut keymap="$default" first-keystroke="ctrl alt G"/>
34
+    </action>
35
+  </actions>
36
+
37
+</idea-plugin>

+ 28
- 0
src/com/rthoni/intellij/codefromds/dbo/ColumnSelection.java View File

@@ -0,0 +1,28 @@
1
+package com.rthoni.intellij.codefromds.dbo;
2
+
3
+import com.intellij.database.model.DasColumn;
4
+
5
+/**
6
+ * Created by robin on 11/15/16.
7
+ */
8
+public class ColumnSelection {
9
+    private DasColumn _column;
10
+
11
+    private boolean _selected;
12
+
13
+    public DasColumn getColumn() {
14
+        return _column;
15
+    }
16
+
17
+    public void setColumn(DasColumn column) {
18
+        _column = column;
19
+    }
20
+
21
+    public boolean isSelected() {
22
+        return _selected;
23
+    }
24
+
25
+    public void setSelected(boolean selected) {
26
+        _selected = selected;
27
+    }
28
+}

+ 30
- 0
src/com/rthoni/intellij/codefromds/dbo/DataSourceSelection.java View File

@@ -0,0 +1,30 @@
1
+package com.rthoni.intellij.codefromds.dbo;
2
+
3
+import com.intellij.database.psi.DbDataSource;
4
+
5
+import java.util.List;
6
+
7
+/**
8
+ * Created by robin on 11/15/16.
9
+ */
10
+public class DataSourceSelection {
11
+    private DbDataSource _source;
12
+
13
+    private List<TableSelection> _tables;
14
+
15
+    public DbDataSource getSource() {
16
+        return _source;
17
+    }
18
+
19
+    public void setSource(DbDataSource source) {
20
+        _source = source;
21
+    }
22
+
23
+    public List<TableSelection> getTables() {
24
+        return _tables;
25
+    }
26
+
27
+    public void setTables(List<TableSelection> tables) {
28
+        _tables = tables;
29
+    }
30
+}

+ 26
- 0
src/com/rthoni/intellij/codefromds/dbo/GenerateOptions.java View File

@@ -0,0 +1,26 @@
1
+package com.rthoni.intellij.codefromds.dbo;
2
+
3
+/**
4
+ * Created by robin on 11/15/16.
5
+ */
6
+public class GenerateOptions {
7
+    private DataSourceSelection _selection;
8
+
9
+    private String _modelsFolder;
10
+
11
+    public DataSourceSelection getSelection() {
12
+        return _selection;
13
+    }
14
+
15
+    public void setSelection(DataSourceSelection selection) {
16
+        _selection = selection;
17
+    }
18
+
19
+    public String getModelsFolder() {
20
+        return _modelsFolder;
21
+    }
22
+
23
+    public void setModelsFolder(String modelsFolder) {
24
+        _modelsFolder = modelsFolder;
25
+    }
26
+}

+ 41
- 0
src/com/rthoni/intellij/codefromds/dbo/TableSelection.java View File

@@ -0,0 +1,41 @@
1
+package com.rthoni.intellij.codefromds.dbo;
2
+
3
+import com.intellij.database.model.DasTable;
4
+
5
+import java.util.List;
6
+
7
+/**
8
+ * Created by robin on 11/15/16.
9
+ */
10
+public class TableSelection {
11
+
12
+    private DasTable _table;
13
+
14
+    private List<ColumnSelection> _columns;
15
+
16
+    public DasTable getTable() {
17
+        return _table;
18
+    }
19
+
20
+    public void setTable(DasTable table) {
21
+        _table = table;
22
+    }
23
+
24
+    public List<ColumnSelection> getColumns() {
25
+        return _columns;
26
+    }
27
+
28
+    public void setColumns(List<ColumnSelection> columns) {
29
+        _columns = columns;
30
+    }
31
+
32
+    public boolean hasNone()
33
+    {
34
+        return _columns != null && _columns.stream().filter(ColumnSelection::isSelected).count() == 0;
35
+    }
36
+
37
+    public boolean hasAll()
38
+    {
39
+        return _columns != null && _columns.stream().filter(ColumnSelection::isSelected).count() == _columns.size();
40
+    }
41
+}

+ 28
- 0
src/com/rthoni/intellij/codefromds/ui/actions/GenerateAction.java View File

@@ -0,0 +1,28 @@
1
+package com.rthoni.intellij.codefromds.ui.actions;
2
+
3
+import com.intellij.openapi.actionSystem.AnAction;
4
+import com.intellij.openapi.actionSystem.AnActionEvent;
5
+import com.intellij.openapi.project.Project;
6
+import com.intellij.openapi.project.ProjectManager;
7
+import com.intellij.openapi.ui.DialogWrapper;
8
+import com.rthoni.intellij.codefromds.dbo.GenerateOptions;
9
+import com.rthoni.intellij.codefromds.ui.dialogs.GenerateDialog;
10
+
11
+import javax.swing.*;
12
+
13
+/**
14
+ * Created by robin on 11/14/16.
15
+ */
16
+public class GenerateAction extends AnAction {
17
+
18
+    @Override
19
+    public void actionPerformed(AnActionEvent e) {
20
+        GenerateDialog dlg = new GenerateDialog(null);
21
+        dlg.show();
22
+        int res = dlg.getExitCode();
23
+        if (res == DialogWrapper.OK_EXIT_CODE) {
24
+            GenerateOptions options = dlg.getOptions();
25
+            options.getSelection();
26
+        }
27
+    }
28
+}

+ 230
- 0
src/com/rthoni/intellij/codefromds/ui/dialogs/GenerateDialog.java View File

@@ -0,0 +1,230 @@
1
+package com.rthoni.intellij.codefromds.ui.dialogs;
2
+
3
+import com.intellij.database.model.DasObject;
4
+import com.intellij.database.model.DasTable;
5
+import com.intellij.database.psi.DbDataSource;
6
+import com.intellij.database.psi.DbPsiFacade;
7
+import com.intellij.database.util.DasUtil;
8
+import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory;
9
+import com.intellij.openapi.project.Project;
10
+import com.intellij.openapi.project.ProjectManager;
11
+import com.intellij.openapi.ui.DialogWrapper;
12
+import com.intellij.openapi.ui.TextFieldWithBrowseButton;
13
+import com.intellij.openapi.ui.ValidationInfo;
14
+import com.intellij.ui.ColoredListCellRenderer;
15
+import com.intellij.ui.JBColor;
16
+import com.intellij.ui.components.JBList;
17
+import com.rthoni.intellij.codefromds.dbo.ColumnSelection;
18
+import com.rthoni.intellij.codefromds.dbo.DataSourceSelection;
19
+import com.rthoni.intellij.codefromds.dbo.GenerateOptions;
20
+import com.rthoni.intellij.codefromds.dbo.TableSelection;
21
+import org.jetbrains.annotations.NotNull;
22
+import org.jetbrains.annotations.Nullable;
23
+
24
+import javax.swing.*;
25
+import javax.swing.event.DocumentEvent;
26
+import javax.swing.event.DocumentListener;
27
+import javax.swing.event.ListSelectionListener;
28
+import java.awt.*;
29
+import java.awt.event.ActionListener;
30
+import java.io.File;
31
+import java.util.Arrays;
32
+import java.util.Collection;
33
+import java.util.List;
34
+import java.util.Vector;
35
+import java.util.stream.Collectors;
36
+
37
+/**
38
+ * Created by robin on 11/14/16.
39
+ */
40
+public class GenerateDialog extends DialogWrapper {
41
+
42
+    private JPanel _panel;
43
+    private JBList _listDatasources;
44
+    private JBList _listTables;
45
+    private JBList _listColumns;
46
+    private TextFieldWithBrowseButton _textModels;
47
+
48
+    private GenerateOptions _options;
49
+
50
+    public GenerateDialog(@Nullable Project project) {
51
+        super(project);
52
+        setTitle("Code FROM data source");
53
+        showSource(null);
54
+        init();
55
+    }
56
+
57
+    public GenerateOptions getOptions() {
58
+        return _options;
59
+    }
60
+
61
+    @Nullable
62
+    @Override
63
+    protected ValidationInfo doValidate() {
64
+        ValidationInfo info = null;
65
+        File modelDir = _options == null ? null : new File(_options.getModelsFolder());
66
+        if (_options == null) {
67
+            info = new ValidationInfo("No Data Source Selected", _listDatasources);
68
+        }
69
+        else if (!modelDir.exists() || !modelDir.isDirectory()) {
70
+            info = new ValidationInfo("Bad Model Folder", _textModels.getTextField());
71
+        }
72
+
73
+        return info;
74
+    }
75
+
76
+    @Nullable
77
+    @Override
78
+    protected JComponent createCenterPanel() {
79
+        ProjectManager pm = ProjectManager.getInstance();
80
+        Project[] projects = pm.getOpenProjects();
81
+
82
+        List<DbDataSource> dataSources = Arrays.stream(projects).map(project -> DbPsiFacade.getInstance(project).getDataSources()).flatMap(Collection::stream).collect(Collectors.toList());
83
+
84
+        _listDatasources.setListData(dataSources.stream().map(DasObject::getName).toArray(String[]::new));
85
+        _listDatasources.addListSelectionListener(e -> {
86
+            if (!e.getValueIsAdjusting()) {
87
+                int index = _listDatasources.getSelectedIndex();
88
+                if (index == -1) {
89
+                    showSource(null);
90
+                }
91
+                else {
92
+                    showSource(dataSources.get(index));
93
+                }
94
+            }
95
+        });
96
+        _listTables.addListSelectionListener(e -> {
97
+            if (!e.getValueIsAdjusting()) {
98
+                int index = _listTables.getSelectedIndex();
99
+                if (index == -1) {
100
+                    showTable(null);
101
+                }
102
+                else {
103
+                    showTable(_options.getSelection().getTables().get(index));
104
+                }
105
+            }
106
+        });
107
+        _textModels.getTextField().getDocument().addDocumentListener(new DocumentListener() {
108
+            @Override
109
+            public void insertUpdate(DocumentEvent e) {
110
+                changed();
111
+            }
112
+
113
+            @Override
114
+            public void removeUpdate(DocumentEvent e) {
115
+                changed();
116
+            }
117
+
118
+            @Override
119
+            public void changedUpdate(DocumentEvent e) {
120
+                changed();
121
+            }
122
+
123
+            public void changed() {
124
+                _options.setModelsFolder(_textModels.getText());
125
+            }
126
+        });
127
+
128
+        if (dataSources.size() > 0) {
129
+            _listDatasources.setSelectedIndices(new int[]{0});
130
+        }
131
+
132
+        return _panel;
133
+    }
134
+
135
+    private void showSource(DbDataSource source)
136
+    {
137
+        showTable(null);
138
+        for (ActionListener l : _textModels.getButton().getActionListeners()) {
139
+            _textModels.getButton().removeActionListener(l);
140
+        }
141
+        if (source != null) {
142
+            _options = new GenerateOptions();
143
+
144
+            _listTables.setCellRenderer(new ColoredListCellRenderer() {
145
+                @Override
146
+                protected void customizeCellRenderer(@NotNull JList jList, Object o, int i, boolean b, boolean b1) {
147
+                    TableSelection tableSelection = _options.getSelection().getTables().get(i);
148
+                    if (tableSelection.hasAll()) {
149
+                        setBackground(JBColor.GREEN);
150
+                    }
151
+                    else if (tableSelection.hasNone()) {
152
+                        setBackground(JBColor.RED);
153
+                    }
154
+                    else {
155
+                        setBackground(JBColor.ORANGE);
156
+                    }
157
+                    append(tableSelection.getTable().getName());
158
+                }
159
+            });
160
+
161
+            _textModels.setText(source.getProject().getBasePath() + File.separator + "Models");
162
+            _textModels.addBrowseFolderListener("Choose Models Destination Folder", "Choose folder",
163
+                    source.getProject(), FileChooserDescriptorFactory.createSingleFolderDescriptor());
164
+
165
+            _options.setSelection(new DataSourceSelection());
166
+            _options.getSelection().setSource(source);
167
+            final List<? extends DasTable> tables = DasUtil.getTables(source).toList();
168
+            List<TableSelection> tableSelections = new Vector<>();
169
+            for (DasTable table : tables) {
170
+                TableSelection tableSelection = new TableSelection();
171
+                tableSelection.setTable(table);
172
+                tableSelection.setColumns(DasUtil.getColumns(table).toList().stream().map(c -> {
173
+                    ColumnSelection selection = new ColumnSelection();
174
+                    selection.setColumn(c);
175
+                    selection.setSelected(true);
176
+                    return selection;
177
+                }).collect(Collectors.toList()));
178
+                tableSelections.add(tableSelection);
179
+            }
180
+            _options.getSelection().setTables(tableSelections);
181
+
182
+            _listTables.setListData(tables.stream().map(DasObject::getName).toArray(String[]::new));
183
+        }
184
+        else {
185
+            _options = null;
186
+            _listTables.setListData(new String[]{});
187
+        }
188
+    }
189
+
190
+    private int[] getSelectedIndices(final TableSelection table)
191
+    {
192
+        List<ColumnSelection> columns = table.getColumns();
193
+        List<Integer> indices = new Vector<>();
194
+        for (int i = 0; i < columns.size(); ++i) {
195
+            if (columns.get(i).isSelected()) {
196
+                indices.add(i);
197
+            }
198
+        }
199
+        return indices.stream().mapToInt(Integer::intValue).toArray();
200
+    }
201
+
202
+    private void updateSelection(final TableSelection table)
203
+    {
204
+        List<ColumnSelection> columns = table.getColumns();
205
+        for (int i = 0; i < columns.size(); ++i) {
206
+            columns.get(i).setSelected(_listColumns.isSelectedIndex(i));
207
+        }
208
+    }
209
+
210
+    private void showTable(TableSelection table)
211
+    {
212
+        if (table != null) {
213
+            for (ListSelectionListener e : _listColumns.getListSelectionListeners()) {
214
+                _listColumns.removeListSelectionListener(e);
215
+            }
216
+            _listColumns.setListData(table.getColumns().stream().map(c -> c.getColumn().getName()).toArray(String[]::new));
217
+            int[] indices = getSelectedIndices(table);
218
+            _listColumns.setSelectedIndices(indices);
219
+            _listColumns.addListSelectionListener(e -> {
220
+                if (!e.getValueIsAdjusting()) {
221
+                    _listTables.updateUI();
222
+                    updateSelection(table);
223
+                }
224
+            });
225
+        }
226
+        else {
227
+            _listColumns.setListData(new String[]{});
228
+        }
229
+    }
230
+}

+ 101
- 0
src/com/rthoni/intellij/codefromds/ui/forms/GenerateForm.form View File

@@ -0,0 +1,101 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="com.rthoni.intellij.codefromds.ui.dialogs.GenerateDialog">
3
+  <grid id="27dc6" binding="_panel" layout-manager="GridLayoutManager" row-count="4" column-count="2" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
4
+    <margin top="0" left="0" bottom="0" right="0"/>
5
+    <constraints>
6
+      <xy x="20" y="20" width="934" height="526"/>
7
+    </constraints>
8
+    <properties/>
9
+    <border type="none"/>
10
+    <children>
11
+      <vspacer id="cffbd">
12
+        <constraints>
13
+          <grid row="3" column="0" row-span="1" col-span="2" vsize-policy="6" hsize-policy="1" anchor="0" fill="2" indent="0" use-parent-layout="false"/>
14
+        </constraints>
15
+      </vspacer>
16
+      <grid id="6946b" layout-manager="GridLayoutManager" row-count="1" column-count="2" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
17
+        <margin top="0" left="0" bottom="0" right="0"/>
18
+        <constraints>
19
+          <grid row="2" column="0" row-span="1" col-span="2" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
20
+        </constraints>
21
+        <properties/>
22
+        <border type="none"/>
23
+        <children>
24
+          <component id="9779e" class="javax.swing.JLabel">
25
+            <constraints>
26
+              <grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
27
+            </constraints>
28
+            <properties>
29
+              <text value="Models Folder:"/>
30
+            </properties>
31
+          </component>
32
+          <component id="cba56" class="com.intellij.openapi.ui.TextFieldWithBrowseButton" binding="_textModels">
33
+            <constraints>
34
+              <grid row="0" column="1" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
35
+            </constraints>
36
+            <properties/>
37
+          </component>
38
+        </children>
39
+      </grid>
40
+      <grid id="39adc" layout-manager="GridLayoutManager" row-count="1" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
41
+        <margin top="0" left="0" bottom="0" right="0"/>
42
+        <constraints>
43
+          <grid row="0" column="0" row-span="1" col-span="2" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
44
+        </constraints>
45
+        <properties/>
46
+        <border type="none" title="Select Data Source"/>
47
+        <children>
48
+          <component id="ad455" class="com.intellij.ui.components.JBList" binding="_listDatasources">
49
+            <constraints>
50
+              <grid row="0" column="0" row-span="1" col-span="1" vsize-policy="6" hsize-policy="2" anchor="0" fill="3" indent="0" use-parent-layout="false">
51
+                <preferred-size width="150" height="50"/>
52
+              </grid>
53
+            </constraints>
54
+            <properties>
55
+              <model/>
56
+              <selectionMode value="0"/>
57
+            </properties>
58
+          </component>
59
+        </children>
60
+      </grid>
61
+      <grid id="ae3e9" layout-manager="GridLayoutManager" row-count="1" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
62
+        <margin top="0" left="0" bottom="0" right="0"/>
63
+        <constraints>
64
+          <grid row="1" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
65
+        </constraints>
66
+        <properties/>
67
+        <border type="none" title="Select Table"/>
68
+        <children>
69
+          <component id="81c7e" class="com.intellij.ui.components.JBList" binding="_listTables">
70
+            <constraints>
71
+              <grid row="0" column="0" row-span="1" col-span="1" vsize-policy="6" hsize-policy="2" anchor="0" fill="3" indent="0" use-parent-layout="false">
72
+                <preferred-size width="150" height="50"/>
73
+              </grid>
74
+            </constraints>
75
+            <properties>
76
+              <selectionMode value="0"/>
77
+            </properties>
78
+          </component>
79
+        </children>
80
+      </grid>
81
+      <grid id="cab88" layout-manager="GridLayoutManager" row-count="1" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
82
+        <margin top="0" left="0" bottom="0" right="0"/>
83
+        <constraints>
84
+          <grid row="1" column="1" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
85
+        </constraints>
86
+        <properties/>
87
+        <border type="none" title="Select Columns To Map"/>
88
+        <children>
89
+          <component id="15ba0" class="com.intellij.ui.components.JBList" binding="_listColumns">
90
+            <constraints>
91
+              <grid row="0" column="0" row-span="1" col-span="1" vsize-policy="6" hsize-policy="2" anchor="0" fill="3" indent="0" use-parent-layout="false">
92
+                <preferred-size width="150" height="50"/>
93
+              </grid>
94
+            </constraints>
95
+            <properties/>
96
+          </component>
97
+        </children>
98
+      </grid>
99
+    </children>
100
+  </grid>
101
+</form>

Loading…
Cancel
Save