preparing release 3.7.9

git-svn-id: https://svn.code.sf.net/p/jailer/code/trunk@878 3dd849cd-670e-4645-a7cd-dd197c8d0e81
This commit is contained in:
rwisser
2011-11-16 21:02:56 +00:00
parent 24f4be9d4b
commit 74761ff6a7
13 changed files with 465 additions and 238 deletions

View File

@@ -10,6 +10,7 @@ cd ..
mv $1.co/trunk/* dbeauty
cd dbeauty
sed "s/new javax.swing.JComboBox()/new net.sf.jailer.ui.JComboBox()/g" src/main/net/sf/jailer/ui/*.java --in-place
sed "s/new javax.swing.JComboBox()/new net.sf.jailer.ui.JComboBox()/g" src/main/net/sf/jailer/ui/databrowser/*.java --in-place
cp doc/web/home.htm doc/web/index.html
rm -rf doc/htdocs
find -iname ".svn" -exec rm -rf '{}' \;

View File

@@ -10,6 +10,7 @@ cd ..
mv $1.co/trunk/* jailer
cd jailer
sed "s/new javax.swing.JComboBox()/new net.sf.jailer.ui.JComboBox()/g" src/main/net/sf/jailer/ui/*.java --in-place
sed "s/new javax.swing.JComboBox()/new net.sf.jailer.ui.JComboBox()/g" src/main/net/sf/jailer/ui/databrowser/*.java --in-place
cp doc/web/home.htm doc/web/index.html
rm -rf doc/htdocs
find -iname ".svn" -exec rm -rf '{}' \;

View File

@@ -1,5 +1,7 @@
1.6
1.5.3
- Added ability to hide table-browser windows from views.
- Added context menu for thumbnailed browser windows.
- Filter-condition historization.
1.5.2
- Fixed a performance issue.

View File

@@ -1,5 +1,7 @@
3.7.9
- Added ability to hide table-browser windows from views.
- Added context menu for thumbnailed browser windows.
- Filter-condition historization.
3.7.8
- Fixed a performance issue within the Data Browser.

View File

@@ -195,7 +195,7 @@ public class AnalyseOptionsDialog extends javax.swing.JDialog {
okButton = new javax.swing.JButton();
cancelButton = new javax.swing.JButton();
schemaLabel = new javax.swing.JLabel();
schemaComboBox = new javax.swing.JComboBox();
schemaComboBox = new net.sf.jailer.ui.JComboBox();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle("Analyze Database");

View File

@@ -784,7 +784,7 @@ public abstract class AssociationListUI extends javax.swing.JPanel {
listPanel = new javax.swing.JPanel();
jPanel2 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
groupByComboBox = new javax.swing.JComboBox();
groupByComboBox = new net.sf.jailer.ui.JComboBox();
infoLabel = new javax.swing.JLabel();
jPanel4 = new javax.swing.JPanel();
hideButton = new javax.swing.JButton();

View File

@@ -115,7 +115,7 @@ public class ColumnMapperDialog extends javax.swing.JDialog {
jPanel1 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
tableCombobox = new javax.swing.JComboBox();
tableCombobox = new net.sf.jailer.ui.JComboBox();
jLabel2 = new javax.swing.JLabel();
jPanel2 = new javax.swing.JPanel();
formatButton = new javax.swing.JButton();

View File

@@ -652,9 +652,9 @@ public class ExtractionModelEditor extends javax.swing.JPanel {
jPanel8 = new javax.swing.JPanel();
jLabel7 = new javax.swing.JLabel();
openSubjectConditionEditor = new javax.swing.JLabel();
subjectTable = new javax.swing.JComboBox();
subjectTable = new net.sf.jailer.ui.JComboBox();
jPanel10 = new javax.swing.JPanel();
exportFormat = new javax.swing.JComboBox();
exportFormat = new net.sf.jailer.ui.JComboBox();
exportButton = new javax.swing.JButton();
openXmlSettings = new javax.swing.JButton();
jPanel4 = new javax.swing.JPanel();
@@ -662,7 +662,7 @@ public class ExtractionModelEditor extends javax.swing.JPanel {
tree = new javax.swing.JTree();
jPanel6 = new javax.swing.JPanel();
jLabel9 = new javax.swing.JLabel();
rootTable = new javax.swing.JComboBox();
rootTable = new net.sf.jailer.ui.JComboBox();
jPanel9 = new javax.swing.JPanel();
openDataBrowser = new javax.swing.JButton();
openClosureView = new javax.swing.JButton();
@@ -671,7 +671,7 @@ public class ExtractionModelEditor extends javax.swing.JPanel {
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
aggregationCombobox = new javax.swing.JComboBox();
aggregationCombobox = new net.sf.jailer.ui.JComboBox();
tagField = new javax.swing.JTextField();
jPanel5 = new javax.swing.JPanel();
xmlTagApply = new javax.swing.JButton();

View File

@@ -54,16 +54,6 @@
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
<SubComponents>
<Component class="javax.swing.JTextField" name="andCondition">
<AuxValues>
<AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="1"/>
</AuxValues>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
<GridBagConstraints gridX="1" gridY="1" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="0.0"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JButton" name="loadButton">
<Properties>
<Property name="text" type="java.lang.String" value=" Reload "/>
@@ -77,6 +67,27 @@
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JComboBox" name="andCondition">
<Properties>
<Property name="editable" type="boolean" value="true"/>
<Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
<StringArray count="4">
<StringItem index="0" value="Item 1"/>
<StringItem index="1" value="Item 2"/>
<StringItem index="2" value="Item 3"/>
<StringItem index="3" value="Item 4"/>
</StringArray>
</Property>
</Properties>
<AuxValues>
<AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
</AuxValues>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
<GridBagConstraints gridX="1" gridY="1" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="0.0"/>
</Constraint>
</Constraints>
</Component>
</SubComponents>
</Container>
<Container class="javax.swing.JPanel" name="onPanel">
@@ -193,7 +204,7 @@
</Component>
</SubComponents>
</Container>
<Container class="javax.swing.JPanel" name="cardPanel">
<Container class="javax.swing.JPanel" name="pendingNonpendingPanel">
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
<GridBagConstraints gridX="2" gridY="12" gridWidth="7" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="1.0"/>
@@ -202,123 +213,188 @@
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignCardLayout"/>
<SubComponents>
<Container class="javax.swing.JPanel" name="jPanel2">
<Container class="javax.swing.JPanel" name="cardPanel">
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignCardLayout" value="org.netbeans.modules.form.compat2.layouts.DesignCardLayout$CardConstraintsDescription">
<CardConstraints cardName="loading"/>
<CardConstraints cardName="nonpending"/>
</Constraint>
</Constraints>
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignCardLayout"/>
<SubComponents>
<Component class="javax.swing.JLabel" name="jLabel2">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
<Font name="DejaVu Sans" size="14" style="1"/>
</Property>
<Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
<Color blue="10" green="10" red="8d" type="rgb"/>
</Property>
<Property name="text" type="java.lang.String" value="loading..."/>
</Properties>
<Container class="javax.swing.JPanel" name="jPanel2">
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
<GridBagConstraints gridX="1" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="8" insetsLeft="8" insetsBottom="8" insetsRight="0" anchor="18" weightX="1.0" weightY="0.0"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JButton" name="cancelLoadButton">
<Properties>
<Property name="text" type="java.lang.String" value="Cancel"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="cancelLoadButtonActionPerformed"/>
</Events>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
<GridBagConstraints gridX="1" gridY="2" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="11" weightX="1.0" weightY="1.0"/>
</Constraint>
</Constraints>
</Component>
</SubComponents>
</Container>
<Container class="javax.swing.JPanel" name="jPanel1">
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignCardLayout" value="org.netbeans.modules.form.compat2.layouts.DesignCardLayout$CardConstraintsDescription">
<CardConstraints cardName="table"/>
</Constraint>
</Constraints>
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
<SubComponents>
<Container class="javax.swing.JScrollPane" name="rowsTableScrollPane">
<Properties>
<Property name="wheelScrollingEnabled" type="boolean" value="false"/>
</Properties>
<AuxValues>
<AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
<AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
</AuxValues>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
<GridBagConstraints gridX="1" gridY="1" gridWidth="1" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="1.0"/>
</Constraint>
</Constraints>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
<SubComponents>
<Component class="javax.swing.JTable" name="rowsTable">
<Properties>
<Property name="autoCreateRowSorter" type="boolean" value="true"/>
<Property name="model" type="javax.swing.table.TableModel" editor="org.netbeans.modules.form.editors2.TableModelEditor">
<Table columnCount="4" rowCount="4">
<Column editable="true" title="Title 1" type="java.lang.Object"/>
<Column editable="true" title="Title 2" type="java.lang.Object"/>
<Column editable="true" title="Title 3" type="java.lang.Object"/>
<Column editable="true" title="Title 4" type="java.lang.Object"/>
</Table>
</Property>
<Property name="autoResizeMode" type="int" value="0"/>
</Properties>
<AuxValues>
<AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="1"/>
</AuxValues>
</Component>
</SubComponents>
</Container>
<Container class="javax.swing.JPanel" name="jPanel6">
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
<GridBagConstraints gridX="1" gridY="2" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="15" weightX="0.0" weightY="0.0"/>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignCardLayout" value="org.netbeans.modules.form.compat2.layouts.DesignCardLayout$CardConstraintsDescription">
<CardConstraints cardName="loading"/>
</Constraint>
</Constraints>
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
<SubComponents>
<Component class="javax.swing.JLabel" name="rowsCount">
<Component class="javax.swing.JLabel" name="jLabel2">
<Properties>
<Property name="text" type="java.lang.String" value="jLabel3"/>
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
<Font name="DejaVu Sans" size="14" style="1"/>
</Property>
<Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
<Color blue="10" green="10" red="8d" type="rgb"/>
</Property>
<Property name="text" type="java.lang.String" value="loading..."/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
<GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="1.0" weightY="0.0"/>
<GridBagConstraints gridX="1" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="8" insetsLeft="8" insetsBottom="8" insetsRight="0" anchor="18" weightX="1.0" weightY="0.0"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JCheckBox" name="selectDistinctCheckBox">
<Component class="javax.swing.JButton" name="cancelLoadButton">
<Properties>
<Property name="selected" type="boolean" value="true"/>
<Property name="text" type="java.lang.String" value="select distinct (-100 rows)"/>
<Property name="text" type="java.lang.String" value="Cancel"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="selectDistinctCheckBoxActionPerformed"/>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="cancelLoadButtonActionPerformed"/>
</Events>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
<GridBagConstraints gridX="1" gridY="2" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="11" weightX="1.0" weightY="1.0"/>
</Constraint>
</Constraints>
</Component>
</SubComponents>
</Container>
<Container class="javax.swing.JPanel" name="jPanel1">
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignCardLayout" value="org.netbeans.modules.form.compat2.layouts.DesignCardLayout$CardConstraintsDescription">
<CardConstraints cardName="table"/>
</Constraint>
</Constraints>
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
<SubComponents>
<Container class="javax.swing.JScrollPane" name="rowsTableScrollPane">
<Properties>
<Property name="wheelScrollingEnabled" type="boolean" value="false"/>
</Properties>
<AuxValues>
<AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
<AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
</AuxValues>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
<GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
<GridBagConstraints gridX="1" gridY="1" gridWidth="1" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="1.0"/>
</Constraint>
</Constraints>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
<SubComponents>
<Component class="javax.swing.JTable" name="rowsTable">
<Properties>
<Property name="autoCreateRowSorter" type="boolean" value="true"/>
<Property name="model" type="javax.swing.table.TableModel" editor="org.netbeans.modules.form.editors2.TableModelEditor">
<Table columnCount="4" rowCount="4">
<Column editable="true" title="Title 1" type="java.lang.Object"/>
<Column editable="true" title="Title 2" type="java.lang.Object"/>
<Column editable="true" title="Title 3" type="java.lang.Object"/>
<Column editable="true" title="Title 4" type="java.lang.Object"/>
</Table>
</Property>
<Property name="autoResizeMode" type="int" value="0"/>
</Properties>
<AuxValues>
<AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="1"/>
</AuxValues>
</Component>
</SubComponents>
</Container>
<Container class="javax.swing.JPanel" name="jPanel6">
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
<GridBagConstraints gridX="1" gridY="2" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="15" weightX="0.0" weightY="0.0"/>
</Constraint>
</Constraints>
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
<SubComponents>
<Component class="javax.swing.JLabel" name="rowsCount">
<Properties>
<Property name="text" type="java.lang.String" value="jLabel3"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
<GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="1.0" weightY="0.0"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JCheckBox" name="selectDistinctCheckBox">
<Properties>
<Property name="selected" type="boolean" value="true"/>
<Property name="text" type="java.lang.String" value="select distinct (-100 rows)"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="selectDistinctCheckBoxActionPerformed"/>
</Events>
<AuxValues>
<AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
</AuxValues>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
<GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
</Constraint>
</Constraints>
</Component>
</SubComponents>
</Container>
</SubComponents>
</Container>
<Container class="javax.swing.JPanel" name="jPanel5">
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignCardLayout" value="org.netbeans.modules.form.compat2.layouts.DesignCardLayout$CardConstraintsDescription">
<CardConstraints cardName="error"/>
</Constraint>
</Constraints>
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
<SubComponents>
<Component class="javax.swing.JLabel" name="jLabel10">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
<Font name="DejaVu Sans" size="14" style="1"/>
</Property>
<Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
<Color blue="10" green="10" red="8d" type="rgb"/>
</Property>
<Property name="text" type="java.lang.String" value="Error"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
<GridBagConstraints gridX="1" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="8" insetsLeft="8" insetsBottom="8" insetsRight="0" anchor="18" weightX="1.0" weightY="1.0"/>
</Constraint>
</Constraints>
</Component>
</SubComponents>
</Container>
<Container class="javax.swing.JPanel" name="jPanel4">
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignCardLayout" value="org.netbeans.modules.form.compat2.layouts.DesignCardLayout$CardConstraintsDescription">
<CardConstraints cardName="cancelled"/>
</Constraint>
</Constraints>
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
<SubComponents>
<Component class="javax.swing.JLabel" name="jLabel8">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
<Font name="DejaVu Sans" size="14" style="1"/>
</Property>
<Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
<Color blue="10" green="10" red="8d" type="rgb"/>
</Property>
<Property name="text" type="java.lang.String" value="Cancelled"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
<GridBagConstraints gridX="1" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="8" insetsLeft="8" insetsBottom="8" insetsRight="0" anchor="18" weightX="1.0" weightY="1.0"/>
</Constraint>
</Constraints>
</Component>
@@ -326,16 +402,16 @@
</Container>
</SubComponents>
</Container>
<Container class="javax.swing.JPanel" name="jPanel5">
<Container class="javax.swing.JPanel" name="jPanel8">
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignCardLayout" value="org.netbeans.modules.form.compat2.layouts.DesignCardLayout$CardConstraintsDescription">
<CardConstraints cardName="error"/>
<CardConstraints cardName="pending"/>
</Constraint>
</Constraints>
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
<SubComponents>
<Component class="javax.swing.JLabel" name="jLabel10">
<Component class="javax.swing.JLabel" name="jLabel11">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
<Font name="DejaVu Sans" size="14" style="1"/>
@@ -343,34 +419,7 @@
<Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
<Color blue="10" green="10" red="8d" type="rgb"/>
</Property>
<Property name="text" type="java.lang.String" value="Error"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
<GridBagConstraints gridX="1" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="8" insetsLeft="8" insetsBottom="8" insetsRight="0" anchor="18" weightX="1.0" weightY="1.0"/>
</Constraint>
</Constraints>
</Component>
</SubComponents>
</Container>
<Container class="javax.swing.JPanel" name="jPanel4">
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignCardLayout" value="org.netbeans.modules.form.compat2.layouts.DesignCardLayout$CardConstraintsDescription">
<CardConstraints cardName="cancelled"/>
</Constraint>
</Constraints>
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
<SubComponents>
<Component class="javax.swing.JLabel" name="jLabel8">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
<Font name="DejaVu Sans" size="14" style="1"/>
</Property>
<Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
<Color blue="10" green="10" red="8d" type="rgb"/>
</Property>
<Property name="text" type="java.lang.String" value="Cancelled"/>
<Property name="text" type="java.lang.String" value="pending..."/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">

View File

@@ -31,8 +31,8 @@ import java.awt.Rectangle;
import java.awt.RenderingHints;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.beans.PropertyChangeEvent;
@@ -73,6 +73,7 @@ import javax.swing.JOptionPane;
import javax.swing.JPopupMenu;
import javax.swing.JSeparator;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.JTree;
import javax.swing.RowSorter;
import javax.swing.SwingUtilities;
@@ -173,7 +174,7 @@ public abstract class BrowserContentPane extends javax.swing.JPanel {
synchronized (rows) {
e = exception;
l = limit;
if (rows.size() > limit) {
while (rows.size() > limit) {
limitExceeded = true;
rows.remove(rows.size() - 1);
}
@@ -181,6 +182,7 @@ public abstract class BrowserContentPane extends javax.swing.JPanel {
}
if (e != null) {
updateMode("error");
unhide();
if (!asking) {
try {
if (table.getName() != null && !table.exists(session, JDBCMetaDataBasedModelElementFinder.getDefaultSchema(session, session.getSchemaName()))) {
@@ -238,6 +240,7 @@ public abstract class BrowserContentPane extends javax.swing.JPanel {
}
}
}
setPendingState(false, true);
onContentChange(rows, rows.isEmpty() || currentHash != prevHash || rows.size() != prevSize || !prevIDs.equals(currentIDs) || rows.size() != currentIDs.size());
updateMode("table");
updateWhereField();
@@ -341,7 +344,12 @@ public abstract class BrowserContentPane extends javax.swing.JPanel {
* Maximum number of concurrent DB connections.
*/
private static int MAX_CONCURRENT_CONNECTIONS = 5;
/**
* And-condition-combobox model.
*/
private final DefaultComboBoxModel andCondModel = new DefaultComboBoxModel();
static {
// initialize listeners for #runnableQueue
for (int i = 0; i < MAX_CONCURRENT_CONNECTIONS; ++i) {
@@ -410,6 +418,8 @@ public abstract class BrowserContentPane extends javax.swing.JPanel {
initComponents();
setPendingState(false, false);
dropA.setText(null);
dropA.setIcon(dropDownIcon);
dropA.addMouseListener(new java.awt.event.MouseAdapter() {
@@ -442,11 +452,17 @@ public abstract class BrowserContentPane extends javax.swing.JPanel {
});
}
andCondition.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
if (key == KeyEvent.VK_ENTER) {
reloadRows();
andCondModel.addElement("");
andCondition.setModel(andCondModel);
andCondition.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
if (!suppessReloadOnAndConditionAction) {
if (e.getStateChange() == ItemEvent.SELECTED) {
historizeAndCondition(e.getItem());
reloadRows();
}
}
}
});
@@ -493,7 +509,7 @@ public abstract class BrowserContentPane extends javax.swing.JPanel {
rowsTable.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);
rowsTableScrollPane.setViewportView(rowsTable);
andCondition.setText(ConditionEditor.toSingleLine(condition));
setAndCondition(condition, true);
from.setText(table == null? "" : this.dataModel.getDisplayName(table));
adjustGui();
rowsTable.setShowGrid(false);
@@ -624,10 +640,10 @@ public abstract class BrowserContentPane extends javax.swing.JPanel {
openEditorLabel.addMouseListener(new java.awt.event.MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
String cond = andConditionEditor.edit(andCondition.getText(), "Table", "A", table, null, null, null, false);
String cond = andConditionEditor.edit(getAndConditionText(), "Table", "A", table, null, null, null, false);
if (cond != null) {
if (!andCondition.getText().equals(ConditionEditor.toSingleLine(cond))) {
andCondition.setText(ConditionEditor.toSingleLine(cond));
if (!getAndConditionText().equals(ConditionEditor.toSingleLine(cond))) {
setAndCondition(cond, true);
loadButton.grabFocus();
reloadRows();
}
@@ -772,7 +788,50 @@ public abstract class BrowserContentPane extends javax.swing.JPanel {
reloadRows();
}
}
void setPendingState(boolean pending, boolean propagate) {
((CardLayout) pendingNonpendingPanel.getLayout()).show(pendingNonpendingPanel, pending? "pending" : "nonpending");
if (propagate) {
for (RowBrowser child: getChildBrowsers()) {
child.browserContentPane.setPendingState(pending, propagate);
}
}
}
protected void historizeAndCondition(Object item) {
if (item == null) {
return;
}
for (int i = 0; i < andCondModel.getSize(); ++i) {
if (item.equals(andCondModel.getElementAt(i))) {
return;
}
}
andCondModel.insertElementAt(item, 1);
}
private boolean suppessReloadOnAndConditionAction = false;
void setAndCondition(String cond, boolean historize) {
try {
suppessReloadOnAndConditionAction = true;
andCondition.setSelectedItem(ConditionEditor.toSingleLine(cond));
if (historize) {
historizeAndCondition(ConditionEditor.toSingleLine(cond));
}
} finally {
suppessReloadOnAndConditionAction = false;
}
}
String getAndConditionText() {
Object sel = andCondition.getSelectedItem();
if (sel == null) {
return "";
}
return sel.toString();
}
private void adjustGui() {
if (this.association == null) {
joinPanel.setVisible(false);
@@ -884,11 +943,11 @@ public abstract class BrowserContentPane extends javax.swing.JPanel {
@Override
public void actionPerformed(ActionEvent e) {
String cond = SqlUtil.replaceAliases(row.rowId, "A", "A");
String currentCond = andCondition.getText().trim();
String currentCond = getAndConditionText().trim();
if (currentCond.length() > 0) {
cond = "(" + cond + ") and (" + currentCond + ")";
}
andCondition.setText(cond);
andCondition.setSelectedItem(cond);
reloadRows();
}
});
@@ -1401,60 +1460,7 @@ public abstract class BrowserContentPane extends javax.swing.JPanel {
// toAdjust.add(getParentBrowser());
// }
List<RowBrowser> toAdjust = getTableBrowser();
for (RowBrowser rb: toAdjust) {
if (rb.browserContentPane == this) {
continue;
}
List<Row> rowsOfRB = new ArrayList<Row>();
for (Pair<BrowserContentPane, Row> r: currentClosure) {
if (r.a == rb.browserContentPane) {
rowsOfRB.add(r.b);
}
}
if (!rowsOfRB.isEmpty()) {
Rectangle firstRowPos = null;
Rectangle lastRowPos = null;
Rectangle visibleRect = rb.browserContentPane.rowsTable.getVisibleRect();
for (Row r: rowsOfRB) {
int index = rb.browserContentPane.rows.indexOf(r);
if (index < 0) {
for (int n = 0; n < rb.browserContentPane.rows.size(); ++n) {
if (r.rowId.equals(rb.browserContentPane.rows.get(n).rowId)) {
index = n;
break;
}
}
}
if (index < 0) {
// not visible due to distinct selection
continue;
}
index = rb.browserContentPane.rowsTable.getRowSorter().convertRowIndexToView(index);
Rectangle pos = rb.browserContentPane.rowsTable.getCellRect(index, 0, false);
if (pos.y >= visibleRect.y && pos.y + pos.height < visibleRect.y + visibleRect.height) {
// already a visible row
firstRowPos = null;
break;
}
if (firstRowPos == null || firstRowPos.y > pos.y) {
firstRowPos = pos;
}
if (lastRowPos == null || lastRowPos.y < pos.y) {
lastRowPos = pos;
}
}
if (lastRowPos != null) {
rb.browserContentPane.rowsTable.scrollRectToVisible(new Rectangle(visibleRect.x, lastRowPos.y, 1, lastRowPos.height));
}
if (firstRowPos != null) {
rb.browserContentPane.rowsTable.scrollRectToVisible(new Rectangle(visibleRect.x, firstRowPos.y, 1, firstRowPos.height));
}
}
}
onRedraw();
adjustClosure(this);
}
private JPopupMenu createNavigationMenu(JPopupMenu popup, final Row row, final int rowIndex, List<String> assList, Map<String, Association> assMap,
@@ -1523,18 +1529,23 @@ public abstract class BrowserContentPane extends javax.swing.JPanel {
return popup;
}
private long lastReloadTS = 0;
/**
* Reloads rows.
*/
public void reloadRows() {
if (!suppressReload) {
lastReloadTS = System.currentTimeMillis();
cancelLoadJob();
setPendingState(true, true);
updateMode("loading");
setPendingState(false, false);
int limit = 100;
if (limitBox.getSelectedItem() instanceof Integer) {
limit = (Integer) limitBox.getSelectedItem();
}
LoadJob reloadJob = new LoadJob(limit, (table instanceof SqlStatementTable)? sqlBrowserContentPane.sqlEditorPane.getText() : andCondition.getText(), selectDistinctCheckBox.isSelected());
LoadJob reloadJob = new LoadJob(limit, (table instanceof SqlStatementTable)? sqlBrowserContentPane.sqlEditorPane.getText() : getAndConditionText(), selectDistinctCheckBox.isSelected());
synchronized (this) {
currentLoadJob = reloadJob;
}
@@ -1956,19 +1967,19 @@ public abstract class BrowserContentPane extends javax.swing.JPanel {
private boolean isLimitExceeded = false;
/**
* True a parent row-limit is exceeded.
* Parent having row-limit exceeded.
*/
private boolean isParentLimitExceeded() {
private RowBrowser parentWithExceededLimit() {
RowBrowser parent = getParentBrowser();
while (parent != null) {
if (parent.browserContentPane.isLimitExceeded) {
return true;
return parent;
}
parent = parent.browserContentPane.getParentBrowser();
}
return false;
return null;
}
/**
@@ -2075,7 +2086,15 @@ public abstract class BrowserContentPane extends javax.swing.JPanel {
size = limit;
}
rowsCount.setText((limitExceeded ? " more than " : " ") + size + " row" + (size != 1 ? "s" : ""));
rowsCount.setForeground(limitExceeded || isParentLimitExceeded()? Color.RED : new JLabel().getForeground());
RowBrowser theParentWithExceededLimit = parentWithExceededLimit();
rowsCount.setForeground(limitExceeded || theParentWithExceededLimit != null? Color.RED : new JLabel().getForeground());
if (theParentWithExceededLimit == null) {
rowsCount.setToolTipText(null);
} else {
rowsCount.setToolTipText("potentially incomplete because " + theParentWithExceededLimit.internalFrame.getTitle() + " exceeded row limit");
}
int nndr = noNonDistinctRows;
if (noDistinctRows + noNonDistinctRows >= limit) {
--nndr;
@@ -2125,8 +2144,8 @@ public abstract class BrowserContentPane extends javax.swing.JPanel {
wherePanel = new javax.swing.JPanel();
where = new javax.swing.JLabel();
jPanel7 = new javax.swing.JPanel();
andCondition = new javax.swing.JTextField();
loadButton = new javax.swing.JButton();
andCondition = new javax.swing.JComboBox();
onPanel = new javax.swing.JPanel();
on = new javax.swing.JLabel();
joinPanel = new javax.swing.JPanel();
@@ -2135,6 +2154,7 @@ public abstract class BrowserContentPane extends javax.swing.JPanel {
jPanel10 = new javax.swing.JPanel();
from = new javax.swing.JLabel();
jLabel5 = new javax.swing.JLabel();
pendingNonpendingPanel = new javax.swing.JPanel();
cardPanel = new javax.swing.JPanel();
jPanel2 = new javax.swing.JPanel();
jLabel2 = new javax.swing.JLabel();
@@ -2149,6 +2169,8 @@ public abstract class BrowserContentPane extends javax.swing.JPanel {
jLabel10 = new javax.swing.JLabel();
jPanel4 = new javax.swing.JPanel();
jLabel8 = new javax.swing.JLabel();
jPanel8 = new javax.swing.JPanel();
jLabel11 = new javax.swing.JLabel();
jLabel1 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
jLabel9 = new javax.swing.JLabel();
@@ -2187,12 +2209,6 @@ public abstract class BrowserContentPane extends javax.swing.JPanel {
add(wherePanel, gridBagConstraints);
jPanel7.setLayout(new java.awt.GridBagLayout());
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 1;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 1.0;
jPanel7.add(andCondition, gridBagConstraints);
loadButton.setText(" Reload ");
loadButton.addActionListener(new java.awt.event.ActionListener() {
@@ -2205,6 +2221,15 @@ public abstract class BrowserContentPane extends javax.swing.JPanel {
gridBagConstraints.gridy = 1;
jPanel7.add(loadButton, gridBagConstraints);
andCondition.setEditable(true);
andCondition.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 1;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 1.0;
jPanel7.add(andCondition, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 4;
gridBagConstraints.gridy = 8;
@@ -2282,6 +2307,8 @@ public abstract class BrowserContentPane extends javax.swing.JPanel {
gridBagConstraints.weightx = 1.0;
add(jPanel10, gridBagConstraints);
pendingNonpendingPanel.setLayout(new java.awt.CardLayout());
cardPanel.setLayout(new java.awt.CardLayout());
jPanel2.setLayout(new java.awt.GridBagLayout());
@@ -2398,6 +2425,24 @@ public abstract class BrowserContentPane extends javax.swing.JPanel {
cardPanel.add(jPanel4, "cancelled");
pendingNonpendingPanel.add(cardPanel, "nonpending");
jPanel8.setLayout(new java.awt.GridBagLayout());
jLabel11.setFont(new java.awt.Font("DejaVu Sans", 1, 14)); // NOI18N
jLabel11.setForeground(new java.awt.Color(141, 16, 16));
jLabel11.setText("pending...");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 1.0;
gridBagConstraints.insets = new java.awt.Insets(8, 8, 8, 0);
jPanel8.add(jLabel11, gridBagConstraints);
pendingNonpendingPanel.add(jPanel8, "pending");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 12;
@@ -2405,7 +2450,7 @@ public abstract class BrowserContentPane extends javax.swing.JPanel {
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 1.0;
add(cardPanel, gridBagConstraints);
add(pendingNonpendingPanel, gridBagConstraints);
jLabel1.setFont(new java.awt.Font("DejaVu Sans", 1, 13));
jLabel1.setText(" Join ");
@@ -2569,7 +2614,9 @@ public abstract class BrowserContentPane extends javax.swing.JPanel {
}//GEN-LAST:event_hideButtonActionPerformed
private void loadButtonActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_loadButtonActionPerformed
reloadRows();
if (System.currentTimeMillis() - lastReloadTS > 200) {
reloadRows();
}
}// GEN-LAST:event_loadButtonActionPerformed
private void limitBoxItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_limitBoxItemStateChanged
@@ -2584,7 +2631,7 @@ public abstract class BrowserContentPane extends javax.swing.JPanel {
}
// Variables declaration - do not modify//GEN-BEGIN:variables
public javax.swing.JTextField andCondition;
javax.swing.JComboBox andCondition;
private javax.swing.JLabel andLabel;
private javax.swing.JButton cancelLoadButton;
private javax.swing.JPanel cardPanel;
@@ -2595,6 +2642,7 @@ public abstract class BrowserContentPane extends javax.swing.JPanel {
private javax.swing.JButton hideButton;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel11;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
@@ -2611,6 +2659,7 @@ public abstract class BrowserContentPane extends javax.swing.JPanel {
private javax.swing.JPanel jPanel5;
private javax.swing.JPanel jPanel6;
private javax.swing.JPanel jPanel7;
private javax.swing.JPanel jPanel8;
private javax.swing.JPanel jPanel9;
private javax.swing.JLabel join;
private javax.swing.JPanel joinPanel;
@@ -2619,6 +2668,7 @@ public abstract class BrowserContentPane extends javax.swing.JPanel {
private javax.swing.JLabel on;
private javax.swing.JPanel onPanel;
private javax.swing.JLabel openEditorLabel;
private javax.swing.JPanel pendingNonpendingPanel;
private javax.swing.JLabel relatedRowsLabel;
private javax.swing.JPanel relatedRowsPanel;
private javax.swing.JLabel rowsCount;
@@ -2689,7 +2739,17 @@ public abstract class BrowserContentPane extends javax.swing.JPanel {
public void actionPerformed(ActionEvent e) {
if (andCondition.isEnabled()) {
if (andCondition.isEditable()) {
andCondition.replaceSelection(c);
if (andCondition.getEditor() != null && (andCondition.getEditor().getEditorComponent() instanceof JTextField)) {
JTextField f = ((JTextField) andCondition.getEditor().getEditorComponent());
int pos = f.getCaretPosition();
String current = f.getText();
if (pos < 0 || pos >= current.length()) {
setAndCondition(current + c, false);
} else {
setAndCondition(current.substring(0, pos) + c + current.substring(pos), false);
f.setCaretPosition(pos + c.length());
}
}
andCondition.grabFocus();
}
}
@@ -2763,6 +2823,8 @@ public abstract class BrowserContentPane extends javax.swing.JPanel {
protected abstract List<RowBrowser> getChildBrowsers();
protected abstract RowBrowser getParentBrowser();
protected abstract List<RowBrowser> getTableBrowser();
protected abstract void unhide();
protected abstract void adjustClosure(BrowserContentPane tabu);
private void openDetails(final int x, final int y) {
JDialog d = new JDialog(getOwner(), (table instanceof SqlStatementTable)? "" : dataModel.getDisplayName(table), true);

View File

@@ -28,7 +28,7 @@ import net.sf.jailer.Jailer;
public class DataBrowserContext {
private static String STANDALONE_APP_NAME = "DBeauty";
private static String STANDALONE_APP_VERSION = "1.6";
private static String STANDALONE_APP_VERSION = "1.5.3";
private static boolean supportsDataModelUpdates = true;
private static Boolean standAlone = null;

View File

@@ -36,6 +36,8 @@ import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.geom.AffineTransform;
import java.awt.geom.Point2D;
import java.beans.PropertyChangeEvent;
@@ -66,6 +68,7 @@ import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JViewport;
import javax.swing.SwingUtilities;
@@ -299,6 +302,9 @@ public abstract class Desktop extends JDesktopPane {
* Hides/unhides RowBrowser.
*/
public void setHidden(boolean hidden) {
if (hidden == this.hidden) {
return;
}
rbSourceToLinks = null;
if (hidden) {
internalFrame.setVisible(false);
@@ -349,12 +355,8 @@ public abstract class Desktop extends JDesktopPane {
Set<String> titles = new HashSet<String>();
for (RowBrowser rb: tableBrowsers) {
titles.add(rb.internalFrame.getTitle());
try {
rb.internalFrame.setMaximum(false);
} catch (PropertyVetoException e) {
// ignore
}
}
demaximize();
String title = null;
if (table != null) {
@@ -553,7 +555,7 @@ public abstract class Desktop extends JDesktopPane {
@Override
protected QueryBuilderDialog.Relationship createQBRelations(boolean withParents) {
QueryBuilderDialog.Relationship root = new QueryBuilderDialog.Relationship();
root.whereClause = ConditionEditor.toMultiLine(andCondition.getText().trim()).replaceAll("(\r|\n)+", " ");
root.whereClause = ConditionEditor.toMultiLine(getAndConditionText().trim()).replaceAll("(\r|\n)+", " ");
if (root.whereClause.length() == 0) {
root.whereClause = null;
}
@@ -576,7 +578,7 @@ public abstract class Desktop extends JDesktopPane {
child.children.addAll(rb.browserContentPane.createQBChildrenRelations(childRB, false));
child.parent = r;
r.children.add(0, child);
child.whereClause = ConditionEditor.toMultiLine(rb.browserContentPane.andCondition.getText().trim()).replaceAll("(\r|\n)+", " ");
child.whereClause = ConditionEditor.toMultiLine(rb.browserContentPane.getAndConditionText().trim()).replaceAll("(\r|\n)+", " ");
if (child.whereClause.length() == 0) {
child.whereClause = null;
}
@@ -610,7 +612,7 @@ public abstract class Desktop extends JDesktopPane {
boolean singleRowParent = rb.rowIndex >= 0 && !(rb.rowIndex == 0 && rb.parent != null && rb.parent.browserContentPane != null && rb.parent.browserContentPane.rows != null && rb.parent.browserContentPane.rows.size() == 1);
if (true) { // all || !singleRowParent) {
QueryBuilderDialog.Relationship child = new QueryBuilderDialog.Relationship();
child.whereClause = ConditionEditor.toMultiLine(rb.browserContentPane.andCondition.getText().trim()).replaceAll("(\r|\n)+", " ");
child.whereClause = ConditionEditor.toMultiLine(rb.browserContentPane.getAndConditionText().trim()).replaceAll("(\r|\n)+", " ");
child.joinOperator = QueryBuilderDialog.JoinOperator.LeftJoin;
if (child.whereClause.length() == 0) {
child.whereClause = null;
@@ -671,8 +673,19 @@ public abstract class Desktop extends JDesktopPane {
@Override
protected void onHide() {
demaximize();
tableBrowser.setHidden(true);
}
@Override
protected void unhide() {
tableBrowser.setHidden(false);
}
@Override
protected void adjustClosure(BrowserContentPane tabu) {
Desktop.this.adjustClosure(tabu);
}
};
@@ -739,6 +752,19 @@ public abstract class Desktop extends JDesktopPane {
return tableBrowser;
}
/**
* Demaximizes all internal frames.
*/
private void demaximize() {
for (RowBrowser rb: tableBrowsers) {
try {
rb.internalFrame.setMaximum(false);
} catch (PropertyVetoException e) {
// ignore
}
}
}
private void initIFrame(final JInternalFrame jInternalFrame,
final BrowserContentPane browserContentPane) {
final JPanel thumbnail = new JPanel();
@@ -763,6 +789,15 @@ public abstract class Desktop extends JDesktopPane {
jInternalFrame.getContentPane().add(browserContentPane, "C");
jInternalFrame.getContentPane().add(thumbnail, "T");
thumbnail.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
JPopupMenu popup = browserContentPane.createPopupMenu(null, -1, 0, 0, false);
popup.show(e.getComponent(), e.getX(), e.getY());
}
});
initIFrameContent(jInternalFrame, browserContentPane, thumbnail);
jInternalFrame.addComponentListener(new ComponentListener() {
@Override
@@ -951,7 +986,7 @@ public abstract class Desktop extends JDesktopPane {
*
* @return <code>true</code> iff something has changed
*/
private boolean calculateLinks() {
private synchronized boolean calculateLinks() {
boolean changed = false;
for (RowBrowser tableBrowser : tableBrowsers) {
JInternalFrame internalFrame = tableBrowser.internalFrame;
@@ -1244,7 +1279,19 @@ public abstract class Desktop extends JDesktopPane {
for (Map.Entry<String, List<Link>> e: links.entrySet()) {
for (Link link: e.getValue()) {
link.visible = false;
List<Link> ll = rbSourceToLinks.get(link.to).get(link.destRowID);
List<Link> ll;
if (link.destRowID == ALL) {
ll = new ArrayList<Desktop.Link>();
for (List<Link> values: rbSourceToLinks.get(link.to).values()) {
for (Link l: values) {
ll.add(l);
}
}
} else {
ll = rbSourceToLinks.get(link.to).get(link.destRowID);
}
toJoinList.clear();
if (ll != null) {
toJoinList.addAll(ll);
@@ -1774,6 +1821,7 @@ public abstract class Desktop extends JDesktopPane {
getVisibleRect().height);
scrollRectToVisible(vr);
updateMenu(layoutMode);
adjustClosure(null);
}
void onMouseWheelMoved(java.awt.event.MouseWheelEvent evt) {
@@ -2005,7 +2053,7 @@ public abstract class Desktop extends JDesktopPane {
if (rb.browserContentPane.table != null) {
String csv = browserNumber.get(rb) + "; " + (rb.parent == null? "" : browserNumber.get(rb.parent)) + "; ";
String where = rb.browserContentPane.andCondition.getText().trim();
String where = rb.browserContentPane.getAndConditionText().trim();
if (rb.browserContentPane.parentRow != null) {
if (where.length() > 0) {
@@ -2204,10 +2252,72 @@ public abstract class Desktop extends JDesktopPane {
return roots;
}
/**
* Adjusts scroll-position of each table browser s.t. rows in closure are visible.
*
* @param tabu don't adjust this one
*/
protected synchronized void adjustClosure(BrowserContentPane tabu) {
for (RowBrowser rb: tableBrowsers) {
if (rb.browserContentPane == tabu) {
continue;
}
List<Row> rowsOfRB = new ArrayList<Row>();
for (Pair<BrowserContentPane, Row> r: currentClosure) {
if (r.a == rb.browserContentPane) {
rowsOfRB.add(r.b);
}
}
if (!rowsOfRB.isEmpty()) {
Rectangle firstRowPos = null;
Rectangle lastRowPos = null;
Rectangle visibleRect = rb.browserContentPane.rowsTable.getVisibleRect();
for (Row r: rowsOfRB) {
int index = rb.browserContentPane.rows.indexOf(r);
if (index < 0) {
for (int n = 0; n < rb.browserContentPane.rows.size(); ++n) {
if (r.rowId.equals(rb.browserContentPane.rows.get(n).rowId)) {
index = n;
break;
}
}
}
if (index < 0) {
// not visible due to distinct selection
continue;
}
index = rb.browserContentPane.rowsTable.getRowSorter().convertRowIndexToView(index);
Rectangle pos = rb.browserContentPane.rowsTable.getCellRect(index, 0, false);
if (pos.y >= visibleRect.y && pos.y + pos.height < visibleRect.y + visibleRect.height) {
// already a visible row
firstRowPos = null;
lastRowPos = null;
break;
}
if (firstRowPos == null || firstRowPos.y > pos.y) {
firstRowPos = pos;
}
if (lastRowPos == null || lastRowPos.y < pos.y) {
lastRowPos = pos;
}
}
if (lastRowPos != null) {
rb.browserContentPane.rowsTable.scrollRectToVisible(new Rectangle(visibleRect.x, lastRowPos.y - lastRowPos.height, 1, 3 * lastRowPos.height));
}
if (firstRowPos != null) {
rb.browserContentPane.rowsTable.scrollRectToVisible(new Rectangle(visibleRect.x, firstRowPos.y - firstRowPos.height, 1, 3 * firstRowPos.height));
}
}
}
repaintDesktop();
}
/**
* Scrolls an iFrame to the center of the desktop.
*/
public void scrollToCenter(JInternalFrame iFrame) {
demaximize();
int w = getVisibleRect().width;
int h = getVisibleRect().height;
int x = iFrame.getBounds().x + iFrame.getBounds().width / 2 - getVisibleRect().width / 2;

View File

@@ -61,7 +61,7 @@ public class QueryBuilderPathSelector extends javax.swing.JDialog {
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
toComboBox = new javax.swing.JComboBox();
toComboBox = new net.sf.jailer.ui.JComboBox();
fromLabel = new javax.swing.JLabel();
okButton = new javax.swing.JButton();
jLabel3 = new javax.swing.JLabel();