Thread: [Squirrel-sql-commits] SF.net SVN: squirrel-sql:[6177] trunk/sql12 (Page 3)
A Java SQL client for any JDBC compliant database
Brought to you by:
colbell,
gerdwagner
From: <wi...@us...> - 2011-03-06 15:57:45
|
Revision: 6177 http://squirrel-sql.svn.sourceforge.net/squirrel-sql/?rev=6177&view=rev Author: wis775 Date: 2011-03-06 15:57:38 +0000 (Sun, 06 Mar 2011) Log Message: ----------- Feature request 3129413: The number of decimal digits are now configurable (See Global Preferences --> 'Data Type Controls') The configuration is possible for the locale depended format. The default behavior is still present (maximumFractionDigits=5). Modified Paths: -------------- trunk/sql12/doc/src/main/resources/changes.txt trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeBigDecimal.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeDouble.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeFloat.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/FloatingPointBase.java trunk/sql12/fw/src/main/resources/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/I18NStrings.properties trunk/sql12/fw/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeBigDecimalTest.java trunk/sql12/fw/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeDoubleTest.java trunk/sql12/fw/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeFloatTest.java Added Paths: ----------- trunk/sql12/fw/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/FloatingPointBaseTest.java Modified: trunk/sql12/doc/src/main/resources/changes.txt =================================================================== --- trunk/sql12/doc/src/main/resources/changes.txt 2011-03-06 00:57:05 UTC (rev 6176) +++ trunk/sql12/doc/src/main/resources/changes.txt 2011-03-06 15:57:38 UTC (rev 6177) @@ -7,6 +7,8 @@ Enhancements: +Feature request 3129413: The number of decimal digits are now configurable (See Global Preferences --> 'Data Type Controls') + Feature requests 3001253, 2896494: New icons in Object tree Display errors in result tab: Modified: trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeBigDecimal.java =================================================================== --- trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeBigDecimal.java 2011-03-06 00:57:05 UTC (rev 6176) +++ trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeBigDecimal.java 2011-03-06 15:57:38 UTC (rev 6177) @@ -122,10 +122,9 @@ _numberFormat = NumberFormat.getInstance(); - // This is a bit hard coded but if we use _scale here - // some number displays go crazy. + // If we use _scale here some number displays go crazy. //_numberFormat.setMaximumFractionDigits(_scale); - _numberFormat.setMaximumFractionDigits(5); + _numberFormat.setMaximumFractionDigits(maximumFractionDigits); _numberFormat.setMinimumFractionDigits(0); Modified: trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeDouble.java =================================================================== --- trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeDouble.java 2011-03-06 00:57:05 UTC (rev 6176) +++ trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeDouble.java 2011-03-06 15:57:38 UTC (rev 6177) @@ -102,9 +102,8 @@ _isNullable = colDef.isNullable(); _numberFormat = NumberFormat.getInstance(); - // This is a bit hard coded but if we use _scale here - // some number displays go crazy. - _numberFormat.setMaximumFractionDigits(5); + // If we use _scale here some number displays go crazy. + _numberFormat.setMaximumFractionDigits(maximumFractionDigits); _numberFormat.setMinimumFractionDigits(0); Modified: trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeFloat.java =================================================================== --- trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeFloat.java 2011-03-06 00:57:05 UTC (rev 6176) +++ trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeFloat.java 2011-03-06 15:57:38 UTC (rev 6177) @@ -108,9 +108,8 @@ _numberFormat = NumberFormat.getInstance(); - // This is a bit hard coded but if we use _scale here - // some number displays go crazy. - _numberFormat.setMaximumFractionDigits(5); + // If we use _scale here some number displays go crazy. + _numberFormat.setMaximumFractionDigits(maximumFractionDigits); _numberFormat.setMinimumFractionDigits(0); Modified: trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/FloatingPointBase.java =================================================================== --- trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/FloatingPointBase.java 2011-03-06 00:57:05 UTC (rev 6176) +++ trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/FloatingPointBase.java 2011-03-06 15:57:38 UTC (rev 6177) @@ -3,15 +3,25 @@ import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.FocusEvent; +import java.awt.event.FocusListener; import java.text.NumberFormat; import javax.swing.BorderFactory; import javax.swing.ButtonGroup; +import javax.swing.JLabel; import javax.swing.JRadioButton; +import javax.swing.JTextField; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import net.sourceforge.squirrel_sql.fw.gui.IntegerField; import net.sourceforge.squirrel_sql.fw.gui.OkJPanel; import net.sourceforge.squirrel_sql.fw.util.StringManager; import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory; +import net.sourceforge.squirrel_sql.fw.util.StringUtilities; public abstract class FloatingPointBase extends BaseDataTypeComponent { @@ -25,6 +35,13 @@ // flag for whether to use the default Java format (true) // or the Locale-dependent format (false) protected static boolean useJavaDefaultFormat = false; + + + /** + * How many Digits after the comma should be shown? + */ + protected static int maximumFractionDigits = 5; + /** * Generate a JPanel containing controls that allow the user @@ -84,6 +101,14 @@ { useJavaDefaultFormat =true; } + + maximumFractionDigits = 5; // by default use 5 + String maximumFractionDigitsString = DTProperties.get(DataTypeBigDecimal.class.getName(), "maximumFractionDigits"); + + if (StringUtilities.isEmpty(maximumFractionDigitsString) == false) + { + maximumFractionDigits =Integer.valueOf(maximumFractionDigitsString); + } } } @@ -98,26 +123,30 @@ JRadioButton optUseDefaultFormat; JRadioButton optUseLocaleDependendFormat; - + IntegerField maximumFraction; + public FloatingPointOkJPanel() { - NumberFormat numberFormat = NumberFormat.getInstance(); - numberFormat.setMaximumFractionDigits(5); + optUseDefaultFormat = new JRadioButton(s_stringMgr.getString("floatingPointBase.useDefaultFormat", new Double(3.14159).toString())); optUseLocaleDependendFormat = - new JRadioButton(s_stringMgr.getString("floatingPointBase.uselocaleDependendFormat", numberFormat.format(new Double(3.14159)))); - - - + new JRadioButton(createTextForOptUseLocaleDependendFormat(maximumFractionDigits)); + + maximumFraction = new IntegerField(2); + setBorder(BorderFactory.createTitledBorder(s_stringMgr.getString("floatingPointBase.typeBigDecimal"))); setLayout(new GridBagLayout()); GridBagConstraints gbc; - gbc = new GridBagConstraints(0,0,1,1,0,0,GridBagConstraints.NORTHWEST,GridBagConstraints.HORIZONTAL, new Insets(4, 4, 4, 4),0,0); + gbc = new GridBagConstraints(0,0,1,1,0,0,GridBagConstraints.WEST,GridBagConstraints.HORIZONTAL, new Insets(4, 4, 4, 4),0,0); add(optUseLocaleDependendFormat, gbc); + + gbc = new GridBagConstraints(1,0,1,1,0,0,GridBagConstraints.EAST,GridBagConstraints.HORIZONTAL, new Insets(4, 4, 4, 4),0,0); + add(maximumFraction, gbc); + gbc = new GridBagConstraints(0,1,1,1,0,0,GridBagConstraints.NORTHWEST,GridBagConstraints.HORIZONTAL, new Insets(0, 4, 4, 4),0,0); add(optUseDefaultFormat, gbc); @@ -127,11 +156,63 @@ bg.add(optUseDefaultFormat); bg.add(optUseLocaleDependendFormat); + + + // Register listeners, for enabling/disabling the integer-field "maximumFraction" + optUseLocaleDependendFormat.addChangeListener(new ChangeListener() { + @Override + public void stateChanged(ChangeEvent e) { + if(optUseLocaleDependendFormat.isSelected()){ + maximumFraction.setEditable(true); + maximumFraction.setEnabled(true); + } + } + }); + + optUseDefaultFormat.addChangeListener(new ChangeListener() { + @Override + public void stateChanged(ChangeEvent e) { + if(optUseDefaultFormat.isSelected()){ + maximumFraction.setEditable(false); + maximumFraction.setEnabled(false); + } + } + }); + + + // Register a listener for updating the example text with the actual settings of maximumFractions + maximumFraction.addFocusListener(new FocusListener() { + @Override + public void focusLost(FocusEvent e) { + optUseLocaleDependendFormat.setText(createTextForOptUseLocaleDependendFormat(maximumFraction.getInt())); + maximumFraction.repaint(); + } + + @Override + public void focusGained(FocusEvent e) { + // do nothing + } + }); + + + // set the initial value optUseLocaleDependendFormat.setSelected(!useJavaDefaultFormat); optUseDefaultFormat.setSelected(useJavaDefaultFormat); + maximumFraction.setInt(maximumFractionDigits); + } /** + * Creates the text for the {@link JRadioButton} of "use locale depended format" with respect of maxFractionDigits + * @param maxFractionDigits Number of digits after the comma to use in the example. + */ + private String createTextForOptUseLocaleDependendFormat(int maxFractionDigits) { + NumberFormat numberFormat = NumberFormat.getInstance(); + numberFormat.setMaximumFractionDigits(maxFractionDigits); + return s_stringMgr.getString("floatingPointBase.uselocaleDependendFormat", numberFormat.format(new Double(3.14159))); + } + + /** * User has clicked OK in the surrounding JPanel, * so save the current state of all variables */ @@ -142,9 +223,12 @@ DTProperties.put(DataTypeBigDecimal.class.getName(), "useJavaDefaultFormat", Boolean.valueOf(useJavaDefaultFormat).toString()); + + maximumFractionDigits = maximumFraction.getInt(); + DTProperties.put(DataTypeBigDecimal.class.getName(), + "maximumFractionDigits", + Integer.valueOf(maximumFractionDigits).toString()); } } // end of inner class - - } Modified: trunk/sql12/fw/src/main/resources/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/I18NStrings.properties =================================================================== --- trunk/sql12/fw/src/main/resources/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/I18NStrings.properties 2011-03-06 00:57:05 UTC (rev 6176) +++ trunk/sql12/fw/src/main/resources/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/I18NStrings.properties 2011-03-06 15:57:38 UTC (rev 6177) @@ -63,7 +63,7 @@ floatingPointBase.typeBigDecimal=FLOAT, REAL, DOUBLE, NUMERIC, DECIMAL (SQL types 6, 7, 8, 2, 3) floatingPointBase.useDefaultFormat=Use default format ({0}) -floatingPointBase.uselocaleDependendFormat=Use locale-dependent format: {0} +floatingPointBase.uselocaleDependendFormat=Use locale-dependent format ({0}) with the maximum number of decimal digits of dataTypeBlob.useColumnLabelInsteadColumnName=Use column labels instead of column names in result headers dataTypeGeneral.generalType=General (applies to all types) \ No newline at end of file Modified: trunk/sql12/fw/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeBigDecimalTest.java =================================================================== --- trunk/sql12/fw/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeBigDecimalTest.java 2011-03-06 00:57:05 UTC (rev 6176) +++ trunk/sql12/fw/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeBigDecimalTest.java 2011-03-06 15:57:38 UTC (rev 6177) @@ -1,10 +1,14 @@ package net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent; +import static org.junit.Assert.assertEquals; + import java.math.BigDecimal; +import java.text.NumberFormat; import net.sourceforge.squirrel_sql.fw.datasetviewer.ColumnDisplayDefinition; import org.junit.Before; +import org.junit.Test; /* * Copyright (C) 2006 Rob Manning @@ -30,17 +34,22 @@ * * @author manningr */ -public class DataTypeBigDecimalTest extends AbstractDataTypeComponentTest +public class DataTypeBigDecimalTest extends FloatingPointBaseTest<BigDecimal> { @Before public void setUp() throws Exception { + initClassUnderTest(); + super.setUp(); + } + + @Override + protected void initClassUnderTest() { ColumnDisplayDefinition columnDisplayDefinition = getMockColumnDisplayDefinition(); mockHelper.replayAll(); classUnderTest = new DataTypeBigDecimal(null, columnDisplayDefinition); mockHelper.resetAll(); - super.setUp(); } @Override @@ -49,4 +58,9 @@ return BigDecimal.ONE; } + @Override + protected BigDecimal getValueForRenderingTests() { + return new BigDecimal(1234.1456789); + } + } Modified: trunk/sql12/fw/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeDoubleTest.java =================================================================== --- trunk/sql12/fw/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeDoubleTest.java 2011-03-06 00:57:05 UTC (rev 6176) +++ trunk/sql12/fw/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeDoubleTest.java 2011-03-06 15:57:38 UTC (rev 6177) @@ -1,5 +1,7 @@ package net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent; +import org.junit.Before; + import net.sourceforge.squirrel_sql.fw.datasetviewer.ColumnDisplayDefinition; /* @@ -26,7 +28,7 @@ * * @author manningr */ -public class DataTypeDoubleTest extends AbstractDataTypeComponentTest { +public class DataTypeDoubleTest extends FloatingPointBaseTest<Double> { /** * @see net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.AbstractDataTypeComponentTest#getWhereClauseValueObject() @@ -37,19 +39,30 @@ return null; } + @Before public void setUp() throws Exception { + initClassUnderTest(); + super.setUp(); + } + + @Override + protected Object getEqualsTestObject() + { + return new Double(0); + } + + @Override + protected void initClassUnderTest() { ColumnDisplayDefinition columnDisplayDefinition = super.getMockColumnDisplayDefinition(); mockHelper.replayAll(); classUnderTest = new DataTypeDouble(null, columnDisplayDefinition); mockHelper.resetAll(); - super.setUp(); } @Override - protected Object getEqualsTestObject() - { - return new Double(0); + protected Double getValueForRenderingTests() { + return new Double(1234.1456789); } Modified: trunk/sql12/fw/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeFloatTest.java =================================================================== --- trunk/sql12/fw/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeFloatTest.java 2011-03-06 00:57:05 UTC (rev 6176) +++ trunk/sql12/fw/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeFloatTest.java 2011-03-06 15:57:38 UTC (rev 6177) @@ -2,8 +2,15 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertEquals; + +import java.lang.reflect.Field; +import java.sql.Date; +import java.text.NumberFormat; + import net.sourceforge.squirrel_sql.fw.datasetviewer.ColumnDisplayDefinition; +import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -31,35 +38,44 @@ * * @author manningr */ -public class DataTypeFloatTest extends AbstractDataTypeComponentTest { +public class DataTypeFloatTest extends FloatingPointBaseTest <Float> { + @Before public void setUp() throws Exception { - ColumnDisplayDefinition mockColumnDisplayDefinition = getMockColumnDisplayDefinition(); - mockHelper.replayAll(); - classUnderTest = new DataTypeFloat(null, mockColumnDisplayDefinition); - mockHelper.resetAll(); + initClassUnderTest(); super.setUp(); - + } - + @Override - protected Object getEqualsTestObject() - { + protected Object getEqualsTestObject() { return Float.valueOf(1); } @Override @Test public void testGetWhereClauseValue() { - ColumnDisplayDefinition localMockColumnDisplayDefinition = - getMockColumnDisplayDefinition(); + ColumnDisplayDefinition localMockColumnDisplayDefinition = getMockColumnDisplayDefinition(); mockHelper.replayAll(); classUnderTest.setColumnDisplayDefinition(localMockColumnDisplayDefinition); assertNotNull(classUnderTest.getWhereClauseValue(null, mockMetaData)); - // Floats cannot be used as where clause values as there are not precise. + // Floats cannot be used as where clause values as there are not + // precise. assertNull(classUnderTest.getWhereClauseValue(getWhereClauseValueObject(), mockMetaData)); mockHelper.verifyAll(); } - + + @Override + protected void initClassUnderTest() { + ColumnDisplayDefinition mockColumnDisplayDefinition = getMockColumnDisplayDefinition(); + mockHelper.replayAll(); + classUnderTest = new DataTypeFloat(null, mockColumnDisplayDefinition); + mockHelper.resetAll(); + } + + @Override + protected Float getValueForRenderingTests() { + return new Float(1234.1456789F); + } } Added: trunk/sql12/fw/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/FloatingPointBaseTest.java =================================================================== --- trunk/sql12/fw/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/FloatingPointBaseTest.java (rev 0) +++ trunk/sql12/fw/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/FloatingPointBaseTest.java 2011-03-06 15:57:38 UTC (rev 6177) @@ -0,0 +1,198 @@ +/* + * Copyright (C) 2011 Stefan Willinger + * wi...@us... + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent; + +import static org.junit.Assert.assertEquals; + +import java.lang.reflect.Field; +import java.text.NumberFormat; + +import net.sourceforge.squirrel_sql.fw.datasetviewer.ColumnDisplayDefinition; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + + +/** + * Some Test-Cases for data types based on {@link FloatingPointBase}. + * Especially rendering of values will be tested. + * @author Stefan Willinger + * @param <T> Type, which the specific data type will handle e.g. {@link Float} + */ +public abstract class FloatingPointBaseTest<T> extends AbstractDataTypeComponentTest { + + private String[] savedDTProperties; + + /** + * For some tests, we need to change {@link DTProperties} before initialization of + * the tested class. This method will be called after changing DTProperties + * and must recreate the classUnderTest. + */ + protected abstract void initClassUnderTest(); + + + @Before + public void setUp() throws Exception { + // some tests need to change the configuration. Save it first. + saveCurrentDTProperties(); + super.setUp(); + + } + + @After + public void tearDown() throws Exception { + // some tests need to change the configuration. Restore them now. + restoreCurrentDTProperties(); + } + + + /** + * Ensure that rendering of a value will be right with the default behavior. + * The default behavior uses a locale dependent format and an default fraction of 5. + * @see #getValueForRenderingTests() + * @throws Exception + */ + @Test + public void testFormat_defaultBehavior() throws Exception + { + initClassUnderTest(); + + T value = getValueForRenderingTests(); + + + String rendered = classUnderTest.renderObject(value); + + + /* + * Use the systems number format instead of comparing string's + * make this test independent from the locale. + */ + NumberFormat numberFormat = NumberFormat.getInstance(); + numberFormat.setMaximumFractionDigits(5); + + assertEquals(numberFormat.format(value), rendered); + } + + + /** + * The value to use for rendering-tests. + * It is suggested to use the value <code>1234.1456789</code> because the default fraction is 5 + * and the custom fraction used by these tests is 6. + */ + protected abstract T getValueForRenderingTests(); + + + /** + * Ensure that rendering of a value will be right by choosing the locale dependent format and an default fraction of 5. + * @see #getValueForRenderingTests() + * @throws Exception + */ + @Test + public void testUseLocaleDependingFormat_defaultFraction() throws Exception + { + DTProperties.put(DataTypeBigDecimal.class.getName(), "useJavaDefaultFormat", "false"); + + initClassUnderTest(); + + T value = getValueForRenderingTests(); + + String rendered = classUnderTest.renderObject(value); + + /* + * Use the systems number format instead of comparing string's + * make this test independent from the locale. + */ + NumberFormat numberFormat = NumberFormat.getInstance(); + numberFormat.setMaximumFractionDigits(5); //Default fraction + + assertEquals(numberFormat.format(value), rendered); + + } + + + /** + * Ensure that rendering of a value will be right by choosing the locale dependent format and an custom fraction. + * @see #getValueForRenderingTests() + * @throws Exception + */ + @Test + public void testUseLocaleDependingFormat_customFraction() throws Exception + { + DTProperties.put(DataTypeBigDecimal.class.getName(), "useJavaDefaultFormat", "false"); + DTProperties.put(DataTypeBigDecimal.class.getName(), "maximumFractionDigits", "6"); + + initClassUnderTest(); + + T value = getValueForRenderingTests(); + + String rendered = classUnderTest.renderObject(value); + + /* + * Use the systems number format instead of comparing string's + * make this test independent from the locale. + */ + NumberFormat numberFormat = NumberFormat.getInstance(); + numberFormat.setMaximumFractionDigits(6); + + assertEquals(numberFormat.format(value), rendered); + + } + + + + private void restoreCurrentDTProperties() { + DTProperties props = new DTProperties(); + props.setDataArray(savedDTProperties); + + } + + private void saveCurrentDTProperties() { + DTProperties props = new DTProperties(); + savedDTProperties = props.getDataArray(); + } + + /** + * Test rendering of a value using the JavaDefaultFormat + * @see #getValueForRenderingTests() + */ + @Test + public void testUseDefaultFormat() throws Exception + { + DTProperties.put(DataTypeBigDecimal.class.getName(), "useJavaDefaultFormat", "true"); + + initClassUnderTest(); + + T value = getValueForRenderingTests(); + + String rendered = classUnderTest.renderObject(value); + + assertEquals(value.toString(), rendered); + + } + + + protected void resetPropertiesLoadedFlag() throws Exception { + Field field = FloatingPointBase.class.getDeclaredField("propertiesAlreadyLoaded"); + field.setAccessible(true); + field.set(null, false); + } + + +} Property changes on: trunk/sql12/fw/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/FloatingPointBaseTest.java ___________________________________________________________________ Added: svn:mime-type + text/plain This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ger...@us...> - 2011-03-10 23:01:41
|
Revision: 6182 http://squirrel-sql.svn.sourceforge.net/squirrel-sql/?rev=6182&view=rev Author: gerdwagner Date: 2011-03-10 23:01:35 +0000 (Thu, 10 Mar 2011) Log Message: ----------- Increased multi table script configuration dialog's size Modified Paths: -------------- trunk/sql12/doc/src/main/resources/changes.txt trunk/sql12/plugins/sqlscript/src/main/java/net/sourceforge/squirrel_sql/plugins/sqlscript/table_script/TableScriptConfigFrame.java Modified: trunk/sql12/doc/src/main/resources/changes.txt =================================================================== --- trunk/sql12/doc/src/main/resources/changes.txt 2011-03-10 19:55:40 UTC (rev 6181) +++ trunk/sql12/doc/src/main/resources/changes.txt 2011-03-10 23:01:35 UTC (rev 6182) @@ -25,6 +25,8 @@ Bug-fixes: +SQL Scripts Plugin: Increased multi table script configuration dialog's size. + 3171762: Wrong syntax for DROP KEY (When qualify table name preference is selected this produced two schema or catalog prefixes on the table name) 3148653: Missing App Icon on Mac OS X (Fix is available in the Mac OS X 3.2.1 installer file) Modified: trunk/sql12/plugins/sqlscript/src/main/java/net/sourceforge/squirrel_sql/plugins/sqlscript/table_script/TableScriptConfigFrame.java =================================================================== --- trunk/sql12/plugins/sqlscript/src/main/java/net/sourceforge/squirrel_sql/plugins/sqlscript/table_script/TableScriptConfigFrame.java 2011-03-10 19:55:40 UTC (rev 6181) +++ trunk/sql12/plugins/sqlscript/src/main/java/net/sourceforge/squirrel_sql/plugins/sqlscript/table_script/TableScriptConfigFrame.java 2011-03-10 23:01:35 UTC (rev 6182) @@ -76,7 +76,7 @@ getContentPane().add(new JPanel(), BorderLayout.CENTER); - setSize(326,178); + setSize(420,200); AbstractAction closeAction = new AbstractAction() { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wi...@us...> - 2011-03-11 17:20:30
|
Revision: 6183 http://squirrel-sql.svn.sourceforge.net/squirrel-sql/?rev=6183&view=rev Author: wis775 Date: 2011-03-11 17:20:23 +0000 (Fri, 11 Mar 2011) Log Message: ----------- BugFix for 3175871: On export to Excel, some numeric values are not exported correctly. Numeric values was converted to float types. This truncated some values e.g 44764301 >> 4764300 In the fact that jxl.write.Number needs an Double as constructor argument, we use now doubleValue() instead of floatValue() for numeric types. Modified Paths: -------------- trunk/sql12/doc/src/main/resources/changes.txt trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/gui/action/TableExportCsvCommand.java Modified: trunk/sql12/doc/src/main/resources/changes.txt =================================================================== --- trunk/sql12/doc/src/main/resources/changes.txt 2011-03-10 23:01:35 UTC (rev 6182) +++ trunk/sql12/doc/src/main/resources/changes.txt 2011-03-11 17:20:23 UTC (rev 6183) @@ -25,6 +25,8 @@ Bug-fixes: +3175871: On export to Excel, some numeric values are not exported correctly. + SQL Scripts Plugin: Increased multi table script configuration dialog's size. 3171762: Wrong syntax for DROP KEY (When qualify table name preference is selected this produced two schema Modified: trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/gui/action/TableExportCsvCommand.java =================================================================== --- trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/gui/action/TableExportCsvCommand.java 2011-03-10 23:01:35 UTC (rev 6182) +++ trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/gui/action/TableExportCsvCommand.java 2011-03-11 17:20:23 UTC (rev 6183) @@ -458,26 +458,26 @@ ret = new jxl.write.Boolean(colIdx, curRow, (Boolean) cellObj); break; case Types.INTEGER: - ret = new jxl.write.Number(colIdx, curRow, ((Number) cellObj).floatValue()); + ret = new jxl.write.Number(colIdx, curRow, ((Number) cellObj).doubleValue()); break; case Types.SMALLINT: case Types.TINYINT: - ret = new jxl.write.Number(colIdx, curRow, ((Number) cellObj).floatValue() ) ; + ret = new jxl.write.Number(colIdx, curRow, ((Number) cellObj).doubleValue() ) ; break; case Types.DECIMAL: - ret = new jxl.write.Number(colIdx, curRow, ((Number) cellObj).floatValue()); + ret = new jxl.write.Number(colIdx, curRow, ((Number) cellObj).doubleValue()); break; case Types.NUMERIC: ret = new jxl.write.Number(colIdx, curRow, ((Number) cellObj).doubleValue()); break; case Types.FLOAT: - ret = new jxl.write.Number(colIdx, curRow, ((Number) cellObj).floatValue()); + ret = new jxl.write.Number(colIdx, curRow, ((Number) cellObj).doubleValue()); break; case Types.DOUBLE: - ret = new jxl.write.Number(colIdx, curRow, ((Number) cellObj).floatValue()); + ret = new jxl.write.Number(colIdx, curRow, ((Number) cellObj).doubleValue()); break; case Types.REAL: - ret = new jxl.write.Number(colIdx, curRow, ((Number) cellObj).floatValue()); + ret = new jxl.write.Number(colIdx, curRow, ((Number) cellObj).doubleValue()); break; case Types.BIGINT: ret = new jxl.write.Number(colIdx, curRow, Long.parseLong(cellObj.toString())); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wi...@us...> - 2011-03-13 16:47:05
|
Revision: 6184 http://squirrel-sql.svn.sourceforge.net/squirrel-sql/?rev=6184&view=rev Author: wis775 Date: 2011-03-13 16:46:55 +0000 (Sun, 13 Mar 2011) Log Message: ----------- 3088572: Squirrel fails when user tries to edit DB fields which have particular characters. Some databases needs to escape special characters. e.g. MySql (see http://dev.mysql.com/doc/refman/5.1/en/string-syntax.html) Squirrel use now parameter values in the where clause, when counting the affected rows or updating data within a result table. With the use of parameters in the where clause, the JDBC driver is responsible for handling these special characters. Squirrel must no longer handle some escape sequences like PostgreSqlEscape. Modified Paths: -------------- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/DataSetUpdateableTableModelImpl.java trunk/sql12/doc/src/main/resources/changes.txt trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/BaseDataTypeComponent.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/CellComponentFactory.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeBigDecimal.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeBinary.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeBlob.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeBoolean.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeByte.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeClob.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeDate.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeDouble.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeFloat.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeInteger.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeJavaObject.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeLong.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeOther.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeShort.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeString.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeTime.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeTimestamp.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeUnknown.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/IDataTypeComponent.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/sql/SQLUtilities.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/util/StringUtilities.java trunk/sql12/fw/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeFloatTest.java trunk/sql12/fw/src/test/java/net/sourceforge/squirrel_sql/fw/util/StringUtilitiesTest.java trunk/sql12/plugins/db2/src/main/java/net/sourceforge/squirrel_sql/plugins/db2/types/DB2XmlTypeDataTypeComponent.java trunk/sql12/plugins/derby/src/main/java/net/sourceforge/squirrel_sql/plugins/derby/types/DerbyClobDataTypeComponent.java trunk/sql12/plugins/oracle/src/main/java/net/sourceforge/squirrel_sql/plugins/oracle/types/OracleXmlTypeDataTypeComponent.java trunk/sql12/plugins/postgres/src/main/java/net/sourceforge/squirrel_sql/plugins/postgres/types/PostgreSqlOtherTypeDataTypeComponent.java trunk/sql12/plugins/postgres/src/main/java/net/sourceforge/squirrel_sql/plugins/postgres/types/PostgreSqlXmlTypeDataTypeComponent.java Added Paths: ----------- trunk/sql12/app/src/test/java/net/sourceforge/squirrel_sql/fw/ trunk/sql12/app/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/ trunk/sql12/app/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/ trunk/sql12/app/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/whereClause/ trunk/sql12/app/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/whereClause/AbstractAdhocTests.java trunk/sql12/app/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/whereClause/MySQLAdhocTests.java trunk/sql12/app/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/whereClause/MySQLnoBackslashEscapesAdhocTests.java trunk/sql12/app/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/whereClause/OracleAdhocTests.java trunk/sql12/app/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/whereClause/mysql.sql trunk/sql12/app/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/whereClause/oracle.sql trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/whereClause/ trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/whereClause/AbstractWhereClausePart.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/whereClause/EmptyWhereClausePart.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/whereClause/IWhereClausePart.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/whereClause/IWhereClausePartUtil.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/whereClause/IsNullWhereClausePart.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/whereClause/NoParameterWhereClausePart.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/whereClause/ParameterWhereClausePart.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/whereClause/WhereClausePartUtil.java trunk/sql12/fw/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/whereClause/ trunk/sql12/fw/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/whereClause/EmptyWhereClausePartTest.java trunk/sql12/fw/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/whereClause/IsNullWhereClausePartTest.java trunk/sql12/fw/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/whereClause/NoParameterWhereClausePartTest.java trunk/sql12/fw/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/whereClause/ParameterWhereClausePartTest.java trunk/sql12/fw/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/whereClause/WhereClausePartUtilTest.java trunk/sql12/plugins/codecompletion/update/ trunk/sql12/plugins/codecompletion/update/backup/ trunk/sql12/plugins/codecompletion/update/backup/core/ trunk/sql12/plugins/codecompletion/update/backup/i18n/ trunk/sql12/plugins/codecompletion/update/backup/plugin/ trunk/sql12/plugins/codecompletion/update/downloads/ trunk/sql12/plugins/codecompletion/update/downloads/core/ trunk/sql12/plugins/codecompletion/update/downloads/i18n/ trunk/sql12/plugins/codecompletion/update/downloads/plugin/ trunk/sql12/plugins/laf/plugins/ trunk/sql12/plugins/laf/plugins/laf/ trunk/sql12/plugins/laf/plugins/laf/lafs/ trunk/sql12/plugins/laf/plugins/laf/skinlf-theme-packs/ trunk/sql12/plugins/sessionscript/plugins/ trunk/sql12/plugins/sessionscript/plugins/sessionscript/ trunk/sql12/plugins/sqlreplace/plugins/ trunk/sql12/plugins/sqlreplace/plugins/sqlreplace/ Removed Paths: ------------- trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DatabaseSpecificEscape.java Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/DataSetUpdateableTableModelImpl.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/DataSetUpdateableTableModelImpl.java 2011-03-11 17:20:23 UTC (rev 6183) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/DataSetUpdateableTableModelImpl.java 2011-03-13 16:46:55 UTC (rev 6184) @@ -3,8 +3,9 @@ import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; -import java.sql.Statement; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Vector; import javax.swing.JOptionPane; @@ -12,9 +13,12 @@ import net.sourceforge.squirrel_sql.client.session.properties.EditWhereCols; import net.sourceforge.squirrel_sql.fw.datasetviewer.ColumnDisplayDefinition; import net.sourceforge.squirrel_sql.fw.datasetviewer.DataSetUpdateableTableModelListener; +import net.sourceforge.squirrel_sql.fw.datasetviewer.IDataModelImplementationDetails; import net.sourceforge.squirrel_sql.fw.datasetviewer.IDataSetUpdateableTableModel; -import net.sourceforge.squirrel_sql.fw.datasetviewer.IDataModelImplementationDetails; import net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.CellComponentFactory; +import net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.whereClause.IWhereClausePart; +import net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.whereClause.IWhereClausePartUtil; +import net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.whereClause.WhereClausePartUtil; import net.sourceforge.squirrel_sql.fw.sql.ISQLConnection; import net.sourceforge.squirrel_sql.fw.sql.ISQLDatabaseMetaData; import net.sourceforge.squirrel_sql.fw.sql.ITableInfo; @@ -76,6 +80,11 @@ * ResultSet, and thus we never have any legal column index here. */ int _rowIDcol = -1; + + /** + * A util for handling parts of an where clause. + */ + private IWhereClausePartUtil whereClausePartUtil = new WhereClausePartUtil(); public void setTableInfo(ITableInfo ti) { @@ -205,15 +214,17 @@ if (ti == null) return TI_ERROR_MESSAGE; - String whereClause = getWhereClause(values, colDefs, col, oldValue); + List<IWhereClausePart> whereClauseParts = getWhereClause(values, colDefs, col, oldValue); + // It is possible for a table to contain only columns of types that // we cannot process or do selects on, so check for that. // Since this check is on the structure of the table rather than the contents, // we only need to do it once (ie: it is not needed in getWarningOnProjectedUpdate) - if (whereClause.length() == 0) + if (whereClausePartUtil.hasUsableWhereClause(whereClauseParts) == false){ // i18n[DataSetUpdateableTableModelImpl.confirmupdateallrows=The table has no columns that can be SELECTed on.\nAll rows will be updated.\nDo you wish to proceed?] return s_stringMgr.getString("DataSetUpdateableTableModelImpl.confirmupdateallrows"); + } final ISession session = _session; final ISQLConnection conn = session.getSQLConnection(); @@ -222,24 +233,7 @@ try { - Statement stmt = null; - ResultSet rs = null; - try - { - stmt = conn.createStatement(); - String countSql = "select count(*) from " + ti.getQualifiedName() + whereClause; - rs = stmt.executeQuery(countSql); - rs.next(); - count = rs.getInt(1); - } - finally - { - // We don't care if these throw an SQLException. Just squelch them - // and report to the user what the outcome of the previous statements - // were. - SQLUtilities.closeResultSet(rs); - SQLUtilities.closeStatement(stmt); - } + count = count(whereClauseParts, conn); } catch (SQLException ex) { @@ -270,6 +264,42 @@ } /** + * Counts the number of affected rows, using this where clause. + * @param whereClauseParts where clause to use + * @param conn connection to use + * @return number of rows in the database, which will be selected by the given whereClauseParts + * @throws SQLException if an SQLExcetpion occurs. + */ + private int count(List<IWhereClausePart> whereClauseParts, + final ISQLConnection conn) throws SQLException { + int count; + PreparedStatement pstmt = null; + ResultSet rs = null; + try + { + String whereClause = whereClausePartUtil.createWhereClause(whereClauseParts); + String countSql = "select count(*) from " + ti.getQualifiedName() + whereClause; + pstmt = conn.prepareStatement(countSql); + whereClausePartUtil.setParameters(pstmt, whereClauseParts, 1); + + rs = pstmt.executeQuery(); + rs.next(); + count = rs.getInt(1); + } + finally + { + // We don't care if these throw an SQLException. Just squelch them + // and report to the user what the outcome of the previous statements + // were. + SQLUtilities.closeResultSet(rs); + SQLUtilities.closeStatement(pstmt); + } + return count; + } + + + +/** * Link from fw to check on whether there are any unusual conditions * that will occur after the update has been done. */ @@ -285,8 +315,8 @@ if (ti == null) return TI_ERROR_MESSAGE; - String whereClause = getWhereClause(values, colDefs, col, newValue); - + List<IWhereClausePart> whereClauseParts = getWhereClause(values, colDefs, col, newValue); + final ISession session = _session; final ISQLConnection conn = session.getSQLConnection(); @@ -294,18 +324,8 @@ try { - final Statement stmt = conn.createStatement(); - try - { - final ResultSet rs = stmt.executeQuery("select count(*) from " - + ti.getQualifiedName() + whereClause); - rs.next(); - count = rs.getInt(1); - } - finally - { - stmt.close(); - } + count = count(whereClauseParts, conn); + } catch (SQLException ex) { @@ -376,8 +396,10 @@ // In some cases it may be possible for the DataType to use the // partial data, such as "matches <data>*", but that may not be // standard accross all Databases and thus may be risky. - String whereClause = getWhereClause(values, colDefs, -1, null); - + + + List<IWhereClausePart> whereClauseParts = getWhereClause(values, colDefs, -1, null); + String whereClause = whereClausePartUtil.createWhereClause(whereClauseParts); final ISession session = _session; final ISQLConnection conn = session.getSQLConnection(); @@ -385,14 +407,17 @@ try { - final Statement stmt = conn.createStatement(); - final String queryString = - "SELECT " + colDefs[col].getColumnName() +" FROM "+ti.getQualifiedName() + - whereClause; + final String queryString = + "SELECT " + colDefs[col].getColumnName() +" FROM "+ti.getQualifiedName() + + whereClause; + + final PreparedStatement pstmt = conn.prepareStatement(queryString); + whereClausePartUtil.setParameters(pstmt, whereClauseParts, 1); + try { - ResultSet rs = stmt.executeQuery(queryString); + ResultSet rs = pstmt.executeQuery(queryString); // There should be one row in the data, so try to move to it if (rs.next() == false) { @@ -417,7 +442,7 @@ } finally { - stmt.close(); + pstmt.close(); } } catch (Exception ex) @@ -454,8 +479,8 @@ return TI_ERROR_MESSAGE; // get WHERE clause using original value - String whereClause = getWhereClause(values, colDefs, col, oldValue); - + List<IWhereClausePart> whereClauseParts = getWhereClause(values, colDefs, col, oldValue); + String whereClause = whereClausePartUtil.createWhereClause(whereClauseParts); if (s_log.isDebugEnabled()) { s_log.debug("updateTableComponent: whereClause = "+whereClause); } @@ -476,10 +501,15 @@ { pstmt = conn.prepareStatement(sql); - // have the DataType object fill in the appropriate kind of value - // into the first (and only) variable position in the prepared stmt + /* + * have the DataType object fill in the appropriate kind of value of the changed data + * into the first variable position in the prepared stmt + */ CellComponentFactory.setPreparedStatementValue( colDefs[col], pstmt, newValue, 1); + + // Fill the parameters of the where clause - start at position 2 because the data which is updated is at position 1 + whereClausePartUtil.setParameters(pstmt, whereClauseParts, 2); count = pstmt.executeUpdate(); } catch (SQLException ex) @@ -550,7 +580,7 @@ * If the col number is < 0, then the colValue is ignored * and the WHERE clause is constructed using only the values[]. */ - private String getWhereClause( + private List<IWhereClausePart> getWhereClause( Object[] values, ColumnDisplayDefinition[] colDefs, int col, @@ -558,20 +588,19 @@ { try { - StringBuffer whereClause = new StringBuffer(""); // For tables that have a lot of columns, the user may have limited the set of columns // to use in the where clause, so see if there is a table of col names HashMap<String, String> colNames = (EditWhereCols.get(getFullTableName())); - - - ColumnDisplayDefinition editedCol = null; + + ColumnDisplayDefinition editedCol = null; if(-1 != col) { editedCol = colDefs[col]; } + List<IWhereClausePart> clauseParts = new ArrayList<IWhereClausePart>(); for (int i=0; i< colDefs.length; i++) { @@ -606,26 +635,16 @@ // do different things depending on data type ISQLDatabaseMetaData md = _session.getMetaData(); - String clause = CellComponentFactory.getWhereClauseValue(colDefs[i], value, md); + IWhereClausePart clausePart = CellComponentFactory.getWhereClauseValue(colDefs[i], value, md); - if (clause != null && clause.length() > 0) - if (whereClause.length() == 0) - { - whereClause.append(clause); - } - else - { - whereClause.append(" AND "); - whereClause.append(clause); - } + + if (clausePart.shouldBeUsed()) + // Now we know that the part should not we ignoredshould + clauseParts.add(clausePart); } + + return clauseParts; - // insert the "WHERE" at the front if there is anything in the clause - if (whereClause.length() == 0) - return ""; - - whereClause.insert(0, " WHERE "); - return whereClause.toString(); } catch (Exception e) { @@ -660,20 +679,14 @@ // get WHERE clause for the selected row // the -1 says to just use the contents of the values without // any substitutions - String whereClause = getWhereClause(rowData[i], colDefs, -1, null); - + List<IWhereClausePart> whereClauseParts = getWhereClause(rowData[i], colDefs, -1, null); + // count how many rows this WHERE matches try { - // do the delete and add the number of rows deleted to the count - final Statement stmt = conn.createStatement(); - try - { - ResultSet rs = stmt.executeQuery("SELECT count(*) FROM " + - ti.getQualifiedName()+whereClause); - - rs.next(); - if (rs.getInt(1) != 1) { - if (rs.getInt(1) == 0) { + + int count = count(whereClauseParts, conn); + if (count != 1) { + if (count == 0) { // i18n[DataSetUpdateableTableModelImpl.error.rownotmatch=\n Row {0} did not match any row in DB] rowCountErrorMessage += s_stringMgr.getString( @@ -684,14 +697,9 @@ rowCountErrorMessage += s_stringMgr.getString( "DataSetUpdateableTableModelImpl.error.rowmatched", - new Object[] { Integer.valueOf(i+1), Integer.valueOf(rs.getInt(1)) }); + new Object[] { Integer.valueOf(i+1), Integer.valueOf(count) }); } } - } - finally - { - stmt.close(); - } } catch (Exception e) { // some kind of problem - tell user @@ -727,20 +735,22 @@ // get WHERE clause for the selected row // the -1 says to just use the contents of the values without // any substitutions - String whereClause = getWhereClause(rowData[i], colDefs, -1, null); - + List<IWhereClausePart> whereClauseParts = getWhereClause(rowData[i], colDefs, -1, null); + String whereClause = whereClausePartUtil.createWhereClause(whereClauseParts); // try to delete try { // do the delete and add the number of rows deleted to the count - final Statement stmt = conn.createStatement(); + String sql = "DELETE FROM " + + ti.getQualifiedName() + whereClause; + final PreparedStatement pstmt = conn.prepareStatement(sql); + whereClausePartUtil.setParameters(pstmt, whereClauseParts, 1); try { - stmt.executeUpdate("DELETE FROM " + - ti.getQualifiedName() + whereClause); + pstmt.executeUpdate(); } finally { - stmt.close(); + pstmt.close(); } } catch (Exception e) { @@ -948,4 +958,8 @@ { _rowIDcol = rowIDCol; } + + public void setWhereClausePartUtil(IWhereClausePartUtil whereClausePartUtil) { + this.whereClausePartUtil = whereClausePartUtil; + } } Added: trunk/sql12/app/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/whereClause/AbstractAdhocTests.java =================================================================== --- trunk/sql12/app/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/whereClause/AbstractAdhocTests.java (rev 0) +++ trunk/sql12/app/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/whereClause/AbstractAdhocTests.java 2011-03-13 16:46:55 UTC (rev 6184) @@ -0,0 +1,169 @@ +package net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.whereClause; + +import static junit.framework.Assert.assertEquals; +import static junit.framework.Assert.assertFalse; +import static junit.framework.Assert.assertNotNull; + +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +import net.sourceforge.squirrel_sql.BaseSQuirreLJUnit4TestCase; +import net.sourceforge.squirrel_sql.fw.datasetviewer.ColumnDisplayDefinition; +import net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.CellComponentFactory; +import net.sourceforge.squirrel_sql.fw.dialects.DialectType; +import net.sourceforge.squirrel_sql.fw.persist.ValidationException; +import net.sourceforge.squirrel_sql.fw.sql.ISQLAlias; +import net.sourceforge.squirrel_sql.fw.sql.ISQLConnection; +import net.sourceforge.squirrel_sql.fw.sql.SQLDatabaseMetaData; +import net.sourceforge.squirrel_sql.fw.sql.SQLDriver; +import net.sourceforge.squirrel_sql.fw.sql.SQLDriverManager; + +import org.easymock.EasyMock; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +/** + * Abstract Test, which ensures the functionality of {@link IWhereClausePart} + * with an specific DB-driver. + * @author Stefan Willinger + * + */ +public abstract class AbstractAdhocTests extends BaseSQuirreLJUnit4TestCase { + + private ISQLConnection sqlConn; + private String user; + private String pw; + private SQLDriver sqlDriver; + private String url; + private DialectType dialect; + private String driverClassName; + private String dbName; + private String[] jarFileNames; + + + public AbstractAdhocTests(String user, String pw, String url, String driverClassName , DialectType dialect, String dbName, String[] jarFileNames) { + this.user = user; + this.pw = pw; + this.url = url; + this.dialect = dialect; + this.driverClassName = driverClassName; + this.dbName = dbName; + this.jarFileNames = jarFileNames; + } + + + /** + * SetUp the test environment. + * @throws Exception + */ + @Before + public void setUp() throws Exception{ + initTestDriver(); + + ISQLAlias mockAlias = mockHelper.createMock(ISQLAlias.class); + EasyMock.expect(mockAlias.getUrl()).andReturn(url); + mockHelper.replayAll(); + + SQLDriverManager mg = new SQLDriverManager(); + + sqlConn = mg.getConnection(sqlDriver, mockAlias, user, pw); + sqlConn.setAutoCommit(false); + + assertNotNull(dialect); + + } + + protected void initTestDriver() throws ValidationException{ + sqlDriver = new SQLDriver(); + sqlDriver.setDriverClassName(driverClassName); + sqlDriver.setName(dbName); + sqlDriver.setUrl(url); + sqlDriver.setJarFileNames(jarFileNames); + } + + + + + + @Test + public void testConnect(){ + assertNotNull(sqlConn); + } + + /** + * Each row of the testtable has unique data. + * This test ensures, that we can find each row with the data provided, when we use {@link IWhereClausePart}. Escaping the special + * characters is done by the JDBC-Driver + * @throws Exception + */ + @Test + public void testCount() throws Exception{ + + String sql = "select * from basicTypes"; + + ResultSet rs = sqlConn.createStatement().executeQuery(sql); + + + List<ColumnDisplayDefinition> cols = new ArrayList<ColumnDisplayDefinition>(); + List<List<Object>> values = new ArrayList<List<Object>>(); + + + // Create ColumnDisplayDefinitions for each selected row, so that we can later create the where clause + while (rs.next()) { + int columnCount = rs.getMetaData().getColumnCount(); + if(cols.isEmpty()){ + for (int i = 1; i <= columnCount; i++) { + cols.add(new ColumnDisplayDefinition(rs, i, dialect)); + } + } + List<Object> v = new ArrayList<Object>(); + for (int i = 1; i <= columnCount; i++) { + v.add(CellComponentFactory.readResultSet(cols.get(i-1), rs, i, false)); + } + values.add(v); + + } + + SQLDatabaseMetaData md = sqlConn.getSQLMetaData(); + + + /* + * Create for each selected row a where clause and ensure that we find exactly the same row with this where clause + * This is for testing the escape functionality of the jdbc-driver. + */ + for (List<Object> row : values) { + Object[] anRow = row.toArray(); + List<IWhereClausePart> whereClause = new ArrayList<IWhereClausePart>(); + for (int i = 0; i < anRow.length; i++) { + Object value = anRow[i]; + whereClause.add(CellComponentFactory.getWhereClauseValue(cols.get(i), value, md)); + } + assertFalse(whereClause.isEmpty()); + + + IWhereClausePartUtil whereClausePartUtil = new WhereClausePartUtil(); + String where = whereClausePartUtil.createWhereClause(whereClause); + + String countSql = "select count(*) from basicTypes " + where; + System.out.println(countSql); + PreparedStatement pstmt = sqlConn.prepareStatement(countSql); + whereClausePartUtil.setParameters(pstmt, whereClause, 1); + ResultSet countRS = pstmt.executeQuery(); + countRS.next(); + assertEquals(1, countRS.getInt(1)); + } + + + } + + + @After + public void tearDown() throws SQLException{ + sqlConn.rollback(); + sqlConn.close(); + } +} Property changes on: trunk/sql12/app/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/whereClause/AbstractAdhocTests.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: trunk/sql12/app/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/whereClause/MySQLAdhocTests.java =================================================================== --- trunk/sql12/app/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/whereClause/MySQLAdhocTests.java (rev 0) +++ trunk/sql12/app/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/whereClause/MySQLAdhocTests.java 2011-03-13 16:46:55 UTC (rev 6184) @@ -0,0 +1,15 @@ +package net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.whereClause; + +import net.sourceforge.squirrel_sql.fw.dialects.DialectType; + +public class MySQLAdhocTests extends AbstractAdhocTests { + + public MySQLAdhocTests() { + super( + "wis", + "wis", + "jdbc:mysql://localhost/wis?sessionVariables=sql_mode=NO_BACKSLASH_ESCAPES", + "com.mysql.jdbc.Driver", DialectType.MYSQL5, "MySQL", + new String[] { "/usr/share/java/mysql.jar" }); + } +} Property changes on: trunk/sql12/app/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/whereClause/MySQLAdhocTests.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: trunk/sql12/app/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/whereClause/MySQLnoBackslashEscapesAdhocTests.java =================================================================== --- trunk/sql12/app/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/whereClause/MySQLnoBackslashEscapesAdhocTests.java (rev 0) +++ trunk/sql12/app/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/whereClause/MySQLnoBackslashEscapesAdhocTests.java 2011-03-13 16:46:55 UTC (rev 6184) @@ -0,0 +1,12 @@ +package net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.whereClause; + +import net.sourceforge.squirrel_sql.fw.dialects.DialectType; + +public class MySQLnoBackslashEscapesAdhocTests extends AbstractAdhocTests { + + public MySQLnoBackslashEscapesAdhocTests() { + super("wis", "wis", "jdbc:mysql://localhost/wis", + "com.mysql.jdbc.Driver", DialectType.MYSQL5, "MySQL", + new String[] { "/usr/share/java/mysql.jar" }); + } +} Property changes on: trunk/sql12/app/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/whereClause/MySQLnoBackslashEscapesAdhocTests.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: trunk/sql12/app/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/whereClause/OracleAdhocTests.java =================================================================== --- trunk/sql12/app/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/whereClause/OracleAdhocTests.java (rev 0) +++ trunk/sql12/app/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/whereClause/OracleAdhocTests.java 2011-03-13 16:46:55 UTC (rev 6184) @@ -0,0 +1,17 @@ +package net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.whereClause; + +import net.sourceforge.squirrel_sql.fw.dialects.DialectType; + +public class OracleAdhocTests extends AbstractAdhocTests { + + public OracleAdhocTests() { + super( + "wis", + "wis", + "jdbc:oracle:thin:@localhost:1521:XE", + "oracle.jdbc.driver.OracleDriver", + DialectType.ORACLE, + "Oracle", + new String[] { "/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/jdbc/lib/ojdbc14.jar" }); + } +} Property changes on: trunk/sql12/app/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/whereClause/OracleAdhocTests.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: trunk/sql12/app/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/whereClause/mysql.sql =================================================================== --- trunk/sql12/app/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/whereClause/mysql.sql (rev 0) +++ trunk/sql12/app/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/whereClause/mysql.sql 2011-03-13 16:46:55 UTC (rev 6184) @@ -0,0 +1,34 @@ +drop table basicTypes; + +create table basicTypes( + cint integer, + clong bigint, + cpresc decimal(9,2), + cfloat float, + cvarchar2 varchar(50), + cdate date, + ctimestamp timestamp +); + + + +-- an simple +insert into basicTypes values (1,12, 12.98,12.98,'simple', current_date(), current_timestamp()); +-- escapaes within an mysql +insert into basicTypes values (2,12, 12.98,12.98,'insert '' an quote', current_date(), current_timestamp()); +insert into basicTypes values (3,12, 12.98,12.98,'insert an ''quote'' word', current_date(), current_timestamp()); +insert into basicTypes values (4,12, 12.98,12.98,'insert an double ''''quote'''' word', current_date(), current_timestamp()); +insert into basicTypes values (5,12, 12.98,12.98,'insert an \\ backslash', current_date(), current_timestamp()); +insert into basicTypes values (6,12, 12.98,12.98,'insert an \\'' backslash quote', current_date(), current_timestamp()); +insert into basicTypes values (7,12, 12.98,12.98,'insert an \r \n CR LF', current_date(), current_timestamp()); +insert into basicTypes values (8,12, 12.98,12.98,'insert an \t tab', current_date(), current_timestamp()); +insert into basicTypes values (9,12, 12.98,12.98,'insert an \b backspace', current_date(), current_timestamp()); +-- some others +insert into basicTypes values (20,12, 12.98,12.98,'insert an % percent', current_date(), current_timestamp()); +insert into basicTypes values (21,12, 12.98,12.98,'insert an _ underscore', current_date(), current_timestamp()); +insert into basicTypes values (22,12, 12.98,12.98,'insert an & ampercent', current_date(), current_timestamp()); +insert into basicTypes values (23,12, 12.98,12.98,'insert an ? question mark', current_date(), current_timestamp()); +insert into basicTypes values (24,12, 12.98,12.98,'insert an :1 double point 1', current_date(), current_timestamp()); +insert into basicTypes values (25,12, 12.98,12.98,'insert an | vertical bar', current_date(), current_timestamp()); +insert into basicTypes values (26,12, 12.98,12.98,'insert an $ dollar', current_date(), current_timestamp()); + Added: trunk/sql12/app/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/whereClause/oracle.sql =================================================================== --- trunk/sql12/app/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/whereClause/oracle.sql (rev 0) +++ trunk/sql12/app/src/test/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/whereClause/oracle.sql 2011-03-13 16:46:55 UTC (rev 6184) @@ -0,0 +1,38 @@ + + + +drop TABLE basicTypes; + +create table basicTypes( + cint number(7), + clong number(19), + cpresc NUMBER(9,2), + cfloat BINARY_FLOAT, + cvarchar2 varchar2(50), + cdate date, + ctimestamp timestamp +); + + +-- an simple +insert into basicTypes values (1,12, 12.98,12.98,'simple', sysdate, systimestamp); +-- escapaes within an mysql +insert into basicTypes values (2,12, 12.98,12.98,'insert '' an quote', sysdate, systimestamp); +insert into basicTypes values (3,12, 12.98,12.98,'insert an ''quote'' word', sysdate, systimestamp); +insert into basicTypes values (4,12, 12.98,12.98,'insert an double ''''quote'''' word', sysdate, systimestamp); +insert into basicTypes values (5,12, 12.98,12.98,'insert an \ backslash', sysdate, systimestamp); +insert into basicTypes values (6,12, 12.98,12.98,'insert an \'' backslash quote', sysdate, systimestamp); +insert into basicTypes values (7,12, 12.98,12.98,'insert an '|| CHR(13) || CHR(10) || ' CR LF', sysdate, systimestamp); +insert into basicTypes values (8,12, 12.98,12.98,'insert an '|| CHR(09) || ' tab', sysdate, systimestamp); +insert into basicTypes values (9,12, 12.98,12.98,'insert an '|| CHR(08) || ' backspace', sysdate, systimestamp); +-- some others +insert into basicTypes values (20,12, 12.98,12.98,'insert an % percent', sysdate, systimestamp); +insert into basicTypes values (21,12, 12.98,12.98,'insert an _ underscore', sysdate, systimestamp); +insert into basicTypes values (22,12, 12.98,12.98,'insert an & ampercent', sysdate, systimestamp); +insert into basicTypes values (23,12, 12.98,12.98,'insert an ? question mark', sysdate, systimestamp); +insert into basicTypes values (24,12, 12.98,12.98,'insert an :1 double point 1', sysdate, systimestamp); +insert into basicTypes values (25,12, 12.98,12.98,'insert an | vertical bar', sysdate, systimestamp); +insert into basicTypes values (26,12, 12.98,12.98,'insert an $ dollar', sysdate, systimestamp); + + + Modified: trunk/sql12/doc/src/main/resources/changes.txt =================================================================== --- trunk/sql12/doc/src/main/resources/changes.txt 2011-03-11 17:20:23 UTC (rev 6183) +++ trunk/sql12/doc/src/main/resources/changes.txt 2011-03-13 16:46:55 UTC (rev 6184) @@ -25,6 +25,8 @@ Bug-fixes: +3088572: Squirrel fails when user tries to edit DB fields which have particular characters. + 3175871: On export to Excel, some numeric values are not exported correctly. SQL Scripts Plugin: Increased multi table script configuration dialog's size. Modified: trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/BaseDataTypeComponent.java =================================================================== --- trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/BaseDataTypeComponent.java 2011-03-11 17:20:23 UTC (rev 6183) +++ trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/BaseDataTypeComponent.java 2011-03-13 16:46:55 UTC (rev 6184) @@ -35,6 +35,9 @@ import net.sourceforge.squirrel_sql.fw.datasetviewer.CellDataPopup; import net.sourceforge.squirrel_sql.fw.datasetviewer.ColumnDisplayDefinition; +import net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.whereClause.IWhereClausePart; +import net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.whereClause.IsNullWhereClausePart; +import net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.whereClause.EmptyWhereClausePart; import net.sourceforge.squirrel_sql.fw.sql.ISQLDatabaseMetaData; import net.sourceforge.squirrel_sql.fw.util.log.ILogger; import net.sourceforge.squirrel_sql.fw.util.log.LoggerController; @@ -297,11 +300,11 @@ * * @see net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.IDataTypeComponent#getWhereClauseValue(java.lang.Object, net.sourceforge.squirrel_sql.fw.sql.ISQLDatabaseMetaData) */ - public String getWhereClauseValue(Object value, ISQLDatabaseMetaData md) { + public IWhereClausePart getWhereClauseValue(Object value, ISQLDatabaseMetaData md) { if (value == null || value.toString() == null ) { - return _colDef.getColumnName() + " IS NULL"; + return new IsNullWhereClausePart(_colDef); } else { - return ""; + return new EmptyWhereClausePart(); } } Modified: trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/CellComponentFactory.java =================================================================== --- trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/CellComponentFactory.java 2011-03-11 17:20:23 UTC (rev 6183) +++ trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/CellComponentFactory.java 2011-03-13 16:46:55 UTC (rev 6184) @@ -22,7 +22,9 @@ import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.TableCellRenderer; + import net.sourceforge.squirrel_sql.fw.datasetviewer.ColumnDisplayDefinition; +import net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.whereClause.IWhereClausePart; import net.sourceforge.squirrel_sql.fw.dialects.DialectType; import net.sourceforge.squirrel_sql.fw.gui.OkJPanel; import net.sourceforge.squirrel_sql.fw.sql.ISQLDatabaseMetaData; @@ -589,7 +591,7 @@ * "columnName is null" * or whatever is appropriate for this column in the database. */ - public static String getWhereClauseValue(ColumnDisplayDefinition colDef, + public static IWhereClausePart getWhereClauseValue(ColumnDisplayDefinition colDef, Object value, ISQLDatabaseMetaData md) { IDataTypeComponent dataTypeObject = getDataTypeObject(null, colDef); @@ -1087,5 +1089,5 @@ } return dataTypeComponent; } - + } Modified: trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeBigDecimal.java =================================================================== --- trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeBigDecimal.java 2011-03-11 17:20:23 UTC (rev 6183) +++ trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeBigDecimal.java 2011-03-13 16:46:55 UTC (rev 6184) @@ -38,6 +38,9 @@ import net.sourceforge.squirrel_sql.fw.datasetviewer.CellDataPopup; import net.sourceforge.squirrel_sql.fw.datasetviewer.ColumnDisplayDefinition; +import net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.whereClause.IWhereClausePart; +import net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.whereClause.IsNullWhereClausePart; +import net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.whereClause.ParameterWhereClausePart; import net.sourceforge.squirrel_sql.fw.sql.ISQLDatabaseMetaData; import net.sourceforge.squirrel_sql.fw.util.StringManager; import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory; @@ -125,6 +128,7 @@ // If we use _scale here some number displays go crazy. //_numberFormat.setMaximumFractionDigits(_scale); _numberFormat.setMaximumFractionDigits(maximumFractionDigits); + _numberFormat.setMinimumFractionDigits(0); @@ -494,11 +498,11 @@ * "columnName is null" * or whatever is appropriate for this column in the database. */ - public String getWhereClauseValue(Object value, ISQLDatabaseMetaData md) { + public IWhereClausePart getWhereClauseValue(Object value, ISQLDatabaseMetaData md) { if (value == null || value.toString() == null || value.toString().length() == 0) - return _colDef.getColumnName() + " IS NULL"; + return new IsNullWhereClausePart(_colDef); else - return _colDef.getColumnName() + "=" + value.toString(); + return new ParameterWhereClausePart(_colDef, value, this); } Modified: trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeBinary.java =================================================================== --- trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeBinary.java 2011-03-11 17:20:23 UTC (rev 6183) +++ trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeBinary.java 2011-03-13 16:46:55 UTC (rev 6184) @@ -35,6 +35,9 @@ import net.sourceforge.squirrel_sql.fw.datasetviewer.CellDataPopup; import net.sourceforge.squirrel_sql.fw.datasetviewer.ColumnDisplayDefinition; +import net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.whereClause.IWhereClausePart; +import net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.whereClause.IsNullWhereClausePart; +import net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.whereClause.EmptyWhereClausePart; import net.sourceforge.squirrel_sql.fw.sql.ISQLDatabaseMetaData; import net.sourceforge.squirrel_sql.fw.util.StringUtilities; @@ -408,13 +411,16 @@ * "columnName is null" * or whatever is appropriate for this column in the database. */ - public String getWhereClauseValue(Object value, ISQLDatabaseMetaData md) { - if (value == null || value.toString() == null || value.toString().length() == 0) - return _colDef.getColumnName() + " IS NULL"; - else + public IWhereClausePart getWhereClauseValue(Object value, ISQLDatabaseMetaData md) { + if (value == null || value.toString() == null || value.toString().length() == 0){ + return new IsNullWhereClausePart(_colDef); + }else{ //?? There does not seem to be any standard way to represent //?? binary data in a WHERE clause... - return null; // tell caller we cannot use this in Where clause + // tell caller we cannot use this in Where clause + // TODO Review, if this DataType could not be used in a where clause + return new EmptyWhereClausePart(); + } } Modified: trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeBlob.java =================================================================== --- trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeBlob.java 2011-03-11 17:20:23 UTC (rev 6183) +++ trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeBlob.java 2011-03-13 16:46:55 UTC (rev 6184) @@ -48,6 +48,9 @@ import net.sourceforge.squirrel_sql.fw.datasetviewer.CellDataPopup; import net.sourceforge.squirrel_sql.fw.datasetviewer.ColumnDisplayDefinition; +import net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.whereClause.IWhereClausePart; +import net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.whereClause.IsNullWhereClausePart; +import net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.whereClause.EmptyWhereClausePart; import net.sourceforge.squirrel_sql.fw.sql.ISQLDatabaseMetaData; import net.sourceforge.squirrel_sql.fw.util.StringManager; import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory; @@ -563,11 +566,14 @@ * "columnName is null" * or whatever is appropriate for this column in the database. */ - public String getWhereClauseValue(Object value, ISQLDatabaseMetaData md) { + public IWhereClausePart getWhereClauseValue(Object value, ISQLDatabaseMetaData md) { if (value == null || ((BlobDescriptor)value).getData() == null) - return _colDef.getColumnName() + " IS NULL"; - else - return ""; // BLOB cannot be used in WHERE clause + return new IsNullWhereClausePart(_colDef); + else{ + // BLOB cannot be used in WHERE clause + // TODO Review, if this DataType could not be used in a where clause + return new EmptyWhereClausePart(); + } } Modified: trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeBoolean.java =================================================================== --- trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeBoolean.java 2011-03-11 17:20:23 UTC (rev 6183) +++ trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeBoolean.java 2011-03-13 16:46:55 UTC (rev 6184) @@ -38,6 +38,9 @@ import net.sourceforge.squirrel_sql.fw.datasetviewer.CellDataPopup; import net.sourceforge.squirrel_sql.fw.datasetviewer.ColumnDisplayDefinition; +import net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.whereClause.IWhereClausePart; +import net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.whereClause.IsNullWhereClausePart; +import net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.whereClause.ParameterWhereClausePart; import net.sourceforge.squirrel_sql.fw.sql.ISQLDatabaseMetaData; /** @@ -363,17 +366,16 @@ * label so that its output is of the form: "columnName = value" or "columnName is null" or whatever is * appropriate for this column in the database. */ - public String getWhereClauseValue(Object value, ISQLDatabaseMetaData md) + public IWhereClausePart getWhereClauseValue(Object value, ISQLDatabaseMetaData md) { if (value == null || value.toString() == null || value.toString().length() == 0) { - return _colDef.getColumnName() + " IS NULL"; + return new IsNullWhereClausePart(_colDef); } else { - String bitValue = DatabaseSpecificBooleanValue.getBooleanValue(value.toString(), md); - return _colDef.getColumnName() + "=" + bitValue; + return new ParameterWhereClausePart(_colDef, value, this); } } Modified: trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeByte.java =================================================================== --- trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeByte.java 2011-03-11 17:20:23 UTC (rev 6183) +++ trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeByte.java 2011-03-13 16:46:55 UTC (rev 6184) @@ -35,6 +35,9 @@ import net.sourceforge.squirrel_sql.fw.datasetviewer.CellDataPopup; import net.sourceforge.squirrel_sql.fw.datasetviewer.ColumnDisplayDefinition; +import net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.whereClause.IWhereClausePart; +import net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.whereClause.IsNullWhereClausePart; +import net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.whereClause.ParameterWhereClausePart; import net.sourceforge.squirrel_sql.fw.sql.ISQLDatabaseMetaData; /** @@ -386,11 +389,11 @@ * "columnName is null" * or whatever is appropriate for this column in the database. */ - public String getWhereClauseValue(Object value, ISQLDatabaseMetaData md) { + public IWhereClausePart getWhereClauseValue(Object value, ISQLDatabaseMetaData md) { if (value == null || value.toString() == null || value.toString().length() == 0) - return _colDef.getColumnName() + " IS NULL"; + return new IsNullWhereClausePart(_colDef); else - return _colDef.getColumnName() + "=" + value.toString(); + return new ParameterWhereClausePart(_colDef, value, this); } Modified: trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeClob.java =================================================================== --- trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeClob.java 2011-03-11 17:20:23 UTC (rev 6183) +++ trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeClob.java 2011-03-13 16:46:55 UTC (rev 6184) @@ -47,6 +47,9 @@ import net.sourceforge.squirrel_sql.fw.datasetviewer.CellDataPopup; import net.sourceforge.squirrel_sql.fw.datasetviewer.ColumnDisplayDefinition; +import net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.whereClause.IWhereClausePart; +import net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.whereClause.IsNullWhereClausePart; +import net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.whereClause.EmptyWhereClausePart; import net.sourceforge.squirrel_sql.fw.gui.IntegerField; import net.sourceforge.squirrel_sql.fw.gui.OkJPanel; import net.sourceforge.squirrel_sql.fw.gui.ReadTypeCombo; @@ -591,11 +594,13 @@ * "columnName is null" * or whatever is appropriate for this column in the database. */ - public String getWhereClauseValue(Object value, ISQLDatabaseMetaData md) { + public IWhereClausePart getWhereClauseValue(Object value, ISQLDatabaseMetaData md) { if (value == null || ((ClobDescriptor)value).getData() == null) - return _colDef.getColumnName() + " IS NULL"; + return new IsNullWhereClausePart(_colDef); else - return ""; // CLOB cannot be used in WHERE clause + // CLOB cannot be used in WHERE clause + // TODO Review, if this DataType could not be used in a where clause + return new EmptyWhereClausePart(); } /** Modified: trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeDate.java =================================================================== --- trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeDate.java 2011-03-11 17:20:23 UTC (rev 6183) +++ trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeDate.java 2011-03-13 16:46:55 UTC (rev 6184) @@ -46,6 +46,9 @@ import net.sourceforge.squirrel_sql.fw.datasetviewer.CellDataPopup; import net.sourceforge.squirrel_sql.fw.datasetviewer.ColumnDisplayDefinition; +import net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.whereClause.IWhereClausePart; +import net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.whereClause.IsNullWhereClausePart; +import net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.whereClause.NoParameterWhereClausePart; import net.sourceforge.squirrel_sql.fw.dialects.DialectFactory; import net.sourceforge.squirrel_sql.fw.gui.OkJPanel; import net.sourceforge.squirrel_sql.fw.gui.RightLabel; @@ -529,11 +532,11 @@ * "columnName is null" * or whatever is appropriate for this column in the database. */ - public String getWhereClauseValue(Object value, ISQLDatabaseMetaData md) + public IWhereClausePart getWhereClauseValue(Object value, ISQLDatabaseMetaData md) { if (value == null || value.toString() == null || value.toString().length() == 0) { - return _colDef.getColumnName() + " IS NULL"; + return new IsNullWhereClausePart(_colDef); } else { @@ -545,17 +548,17 @@ if (hasTimeComponent && hasDateComponent) { // treat it like a timestamp - return _colDef.getColumnName() + "={ts '" + value.toString() + "'}"; + return new NoParameterWhereClausePart(_colDef, _colDef.getColumnName() + "={ts '" + value.toString() + "'}"); } else if (hasTimeComponent) { // treat it like a time - no date component - return _colDef.getColumnName() + "={t '" + value.toString() + "'}"; + return new NoParameterWhereClausePart(_colDef, _colDef.getColumnName() + "={t '" + value.toString() + "'}"); } else { if (DialectFactory.isOracle(md)) { // Oracle stores time information in java.sql.Types.Date columns // This tells Oracle that we are only talking about the date part. - return "trunc(" + _colDef.getColumnName() + ")={d '" + value.toString() + "'}"; + return new NoParameterWhereClausePart(_colDef, "trunc(" + _colDef.getColumnName() + ")={d '" + value.toString() + "'}"); } else { - return _colDef.getColumnName() + "={d '" + value.toString() + "'}"; + return new NoParameterWhereClausePart(_colDef, _colDef.getColumnName() + "={d '" + value.toString() + "'}"); } } } Modified: trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeDouble.java =================================================================== --- trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeDouble.java 2011-03-11 17:20:23 UTC (rev 6183) +++ trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeDouble.java 2011-03-13 16:46:55 UTC (rev 6184) @@ -38,6 +38,9 @@ import net.sourceforge.squirrel_sql.fw.datasetviewer.CellDataPopup; import net.sourceforge.squirrel_sql.fw.datasetviewer.ColumnDisplayDefinition; +import net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.whereClause.IWhereClausePart; +import net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.whereClause.IsNullWhereClausePart; +import net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.whereClause.EmptyWhereClausePart; import net.sourceforge.squirrel_sql.fw.sql.ISQLDatabaseMetaData; import net.sourceforge.squirrel_sql.fw.util.log.ILogger; import net.sourceforge.squirrel_sql.fw.util.log.LoggerController; @@ -101,7 +104,7 @@ _colDef = colDef; _isNullable = colDef.isNullable(); _numberFormat = NumberFormat.getInstance(); - + // If we use _scale here some number displays go crazy. _numberFormat.setMaximumFractionDigits(maximumFractionDigits); @@ -418,17 +421,17 @@ * label so that its output is of the form: "columnName = value" or "columnName is null" or whatever is * appropriate for this column in the database. */ - public String getWhereClauseValue(Object value, ISQLDatabaseMetaData md) + public IWhereClausePart getWhereClauseValue(Object value, ISQLDatabaseMetaData md) { if (value == null || value.toString() == null || value.toString().length() == 0) { - return _colDef.getColumnName() + " IS NULL"; + return new IsNullWhereClausePart(_colDef); } else { // since we cannot do exact matches on floating point // numbers, we cannot use this field in the WHERE clause. - return null; + return new EmptyWhereClausePart(); } } Modified: trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeFloat.java =================================================================== --- trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeFloat.java 2011-03-11 17:20:23 UTC (rev 6183) +++ trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeFloat.java 2011-03-13 16:46:55 UTC (rev 6184) @@ -37,6 +37,9 @@ import net.sourceforge.squirrel_sql.fw.datasetviewer.CellDataPopup; import net.sourceforge.squirrel_sql.fw.datasetviewer.ColumnDisplayDefinition; +import net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.whereClause.IWhereClausePart; +import net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.whereClause.IsNullWhereClausePart; +import net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.whereClause.EmptyWhereClausePart; import net.sourceforge.squirrel_sql.fw.sql.ISQLDatabaseMetaData; import net.sourceforge.squirrel_sql.fw.util.log.ILogger; import net.sourceforge.squirrel_sql.fw.util.log.LoggerController; @@ -421,13 +424,13 @@ * "columnName is null" * or whatever is appropriate for this column in the database. */ - public String getWhereClauseValue(Object value, ISQLDatabaseMetaData md) { + public IWhereClausePart getWhereClauseValue(Object value, ISQLDatabaseMetaData md) { if (value == null || value.toString() == null || value.toString().length() == 0) { - return _colDef.getColumnName() + " IS NULL"; + return new IsNullWhereClausePart(_colDef); } else { // since we cannot do exact matches on floating point // numbers, we cannot use this field in the WHERE clause. - return null; + return new EmptyWhereClausePart(); } } Modified: trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeInteger.java =================================================================== --- trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeInteger.java 2011-03-11 17:20:23 UTC (rev 6183) +++ trunk/sql12/fw/src/main... [truncated message content] |
From: <ger...@us...> - 2011-03-13 19:44:48
|
Revision: 6187 http://squirrel-sql.svn.sourceforge.net/squirrel-sql/?rev=6187&view=rev Author: gerdwagner Date: 2011-03-13 19:44:38 +0000 (Sun, 13 Mar 2011) Log Message: ----------- Query Builder: First step Modified Paths: -------------- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/gui/session/MainPanel.java trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/ExtendedColumnInfo.java trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/BaseMainPanelTab.java trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/IMainPanelTab.java trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/objecttree/ObjectTreePanel.java trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/objecttree/expanders/IndexParentInfo.java trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/objecttree/expanders/TriggerParentInfo.java trunk/sql12/app/src/main/resources/net/sourceforge/squirrel_sql/client/session/mainpanel/objecttree/I18NStrings.properties trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/sql/DataTypeInfo.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/sql/DatabaseObjectInfo.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/sql/ForeignKeyInfo.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/sql/IndexInfo.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/sql/PrimaryKeyInfo.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/sql/ProcedureInfo.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/sql/TableColumnInfo.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/sql/TableInfo.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/sql/UDTInfo.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/sql/dbobj/BestRowIdentifier.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/AddToGraphAction.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ColumnInfo.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ColumnTextArea.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ConfigureNonDbConstraintDlg.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ConstraintData.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ConstraintView.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/DndColumn.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/DndHandler.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphController.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphControllerAccessor.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphDesktopController.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphDesktopListener.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphDesktopPane.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphMainPanelTab.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphPlugin.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphPluginResources.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphTextAreaFactory.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/TableFrame.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/TableFrameController.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ZoomPrintController.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ZoomableColumnTextArea.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/Zoomer.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ZoomerListener.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/xmlbeans/ColumnInfoXmlBean.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/xmlbeans/ConstraintDataXmlBean.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/xmlbeans/GraphControllerXmlBean.java trunk/sql12/plugins/graph/src/main/resources/net/sourceforge/squirrel_sql/plugins/graph/GraphPluginResources.properties trunk/sql12/plugins/graph/src/main/resources/net/sourceforge/squirrel_sql/plugins/graph/I18NStrings.properties trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/HQLEntryPanelManager.java trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/HibernateTabController.java trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/SQLPanelManager.java trunk/sql12/plugins/mysql/src/main/java/net/sourceforge/squirrel_sql/plugins/mysql/gui/AlterTableDialog.java trunk/sql12/plugins/oracle/src/main/java/net/sourceforge/squirrel_sql/plugins/oracle/expander/ConstraintParentInfo.java trunk/sql12/plugins/postgres/src/main/java/net/sourceforge/squirrel_sql/plugins/postgres/util/RelatedObjectInfo.java trunk/sql12/plugins/syntax/src/main/java/net/sourceforge/squirrel_sql/plugins/syntax/prefspanel/StylesList.java Added Paths: ----------- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/EntryPanelManager.java trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/objecttree/ObjectTreeDndTransfer.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/AggregateFunctions.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ColumnInfoModel.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ColumnInfoModelEventDispatcher.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ColumnInfoModelListener.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ConstraintHit.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ConstraintHitData.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ConstraintIconHandler.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ConstraintQueryData.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ConstraintViewsModel.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ConstraintViewsModelListener.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/DefaultGraphDisplay.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphDockHandle.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphDockHandleFactory.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphDockHandleListener.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphPanelController.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphQueryResultPanel.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphQuerySQLPanel.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphQuerySQLPanelCtrl.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/IColumnTextArea.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/IGraphDisplay.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/Mode.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ModeManager.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ModeManagerListener.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ModeMenuItem.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/OrderType.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/Positioner.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/QueryBuilder.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/QueryBuilderController.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/QueryColumnPanel.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/QueryColumnTextField.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/QueryData.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/QueryFilterController.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/QueryFilterDlg.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/QueryFilterListener.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/QueryFilterOperators.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/QueryJoinType.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/QueryTextArea.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/TableFramesModel.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/TableFramesModelChangeType.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/TableFramesModelListener.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/sqlgen/ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/sqlgen/FromClauseGenerator.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/sqlgen/FromClauseRes.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/sqlgen/QueryBuilderSQLGenerator.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/sqlgen/SelectClauseGenerator.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/sqlgen/SelectClauseRes.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/sqlgen/WhereClauseGenerator.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/xmlbeans/ConstraintQueryDataXmlBean.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/xmlbeans/QueryDataXmlBean.java trunk/sql12/plugins/graph/src/main/resources/net/sourceforge/squirrel_sql/plugins/graph/images/aggcount.png trunk/sql12/plugins/graph/src/main/resources/net/sourceforge/squirrel_sql/plugins/graph/images/aggfct.png trunk/sql12/plugins/graph/src/main/resources/net/sourceforge/squirrel_sql/plugins/graph/images/aggfct_checked.png trunk/sql12/plugins/graph/src/main/resources/net/sourceforge/squirrel_sql/plugins/graph/images/aggmax.png trunk/sql12/plugins/graph/src/main/resources/net/sourceforge/squirrel_sql/plugins/graph/images/aggmin.png trunk/sql12/plugins/graph/src/main/resources/net/sourceforge/squirrel_sql/plugins/graph/images/aggsum.png trunk/sql12/plugins/graph/src/main/resources/net/sourceforge/squirrel_sql/plugins/graph/images/equal.png trunk/sql12/plugins/graph/src/main/resources/net/sourceforge/squirrel_sql/plugins/graph/images/equalCrossed.png trunk/sql12/plugins/graph/src/main/resources/net/sourceforge/squirrel_sql/plugins/graph/images/equalLeft.png trunk/sql12/plugins/graph/src/main/resources/net/sourceforge/squirrel_sql/plugins/graph/images/equalRight.png trunk/sql12/plugins/graph/src/main/resources/net/sourceforge/squirrel_sql/plugins/graph/images/filter.gif trunk/sql12/plugins/graph/src/main/resources/net/sourceforge/squirrel_sql/plugins/graph/images/filter_checked.gif trunk/sql12/plugins/graph/src/main/resources/net/sourceforge/squirrel_sql/plugins/graph/images/toWindow.gif Removed Paths: ------------- trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/EntryPanelManagerBase.java Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/gui/session/MainPanel.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/gui/session/MainPanel.java 2011-03-13 17:40:55 UTC (rev 6186) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/gui/session/MainPanel.java 2011-03-13 19:44:38 UTC (rev 6187) @@ -186,9 +186,11 @@ throw new IllegalArgumentException("Null IMainPanelTab passed"); } tab.setSession(_session); - final String title = tab.getTitle(); - int idx = _tabPnl.indexOfTab(title); - if (idx != -1) + + int idx = getTabIndex(tab); + + + if (idx != -1) { _tabPnl.removeTabAt(idx); _tabs.set(idx, tab); @@ -198,8 +200,14 @@ idx = _tabPnl.getTabCount(); _tabs.add(tab); } - _tabPnl.insertTab(title, null, tab.getComponent(), tab.getHint(), idx); + _tabPnl.insertTab(tab.getTitle(), null, tab.getComponent(), tab.getHint(), idx); + if(null != tab.getTabComponent()) + { + _tabPnl.setTabComponentAt(idx, tab.getTabComponent()); + } + + int prefIx = Preferences.userRoot().getInt(PREFS_KEY_SELECTED_TAB_IX, ITabIndexes.OBJECT_TREE_TAB); if(idx == prefIx) { @@ -237,31 +245,51 @@ } tab.setSession(_session); - final String title = tab.getTitle(); - int checkIdx = _tabPnl.indexOfTab(title); - if (checkIdx != -1) + + int checkIdx = getTabIndex(tab); + + + if (checkIdx != -1) { throw new IllegalArgumentException("A tab with the same title already exists at index " + checkIdx); } _tabs.add(idx, tab); - _tabPnl.insertTab(title, null, tab.getComponent(), tab.getHint(), idx); + _tabPnl.insertTab(tab.getTitle(), null, tab.getComponent(), tab.getHint(), idx); + if(null != tab.getTabComponent()) + { + _tabPnl.setTabComponentAt(idx, tab.getTabComponent()); + } + if(selectInsertedTab) { _tabPnl.setSelectedIndex(idx); } } - public int removeMainPanelTab(IMainPanelTab tab) + private int getTabIndex(IMainPanelTab tab) + { + int checkIdx; + if(null == tab.getTabComponent()) + { + checkIdx = _tabPnl.indexOfTab(tab.getTitle()); + } + else + { + checkIdx = _tabPnl.indexOfTabComponent(tab.getTabComponent()); + } + return checkIdx; + } + + public int removeMainPanelTab(IMainPanelTab tab) { if (tab == null) { throw new IllegalArgumentException("Null IMainPanelTab passed"); } - final String title = tab.getTitle(); - int idx = _tabPnl.indexOfTab(title); + int idx = getTabIndex(tab); if (idx == -1) { return idx; Copied: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/EntryPanelManager.java (from rev 6133, trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/EntryPanelManagerBase.java) =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/EntryPanelManager.java (rev 0) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/EntryPanelManager.java 2011-03-13 19:44:38 UTC (rev 6187) @@ -0,0 +1,82 @@ +package net.sourceforge.squirrel_sql.client.session; + +import net.sourceforge.squirrel_sql.client.gui.session.ToolsPopupAccessor; +import net.sourceforge.squirrel_sql.client.session.mainpanel.UndoHandlerImpl; +import net.sourceforge.squirrel_sql.client.session.parser.IParserEventsProcessorFactory; + +import javax.swing.*; +import java.util.HashMap; + +public class EntryPanelManager +{ + private ISession _session; + private ISQLEntryPanel _entry; + private JComponent _component; + + public EntryPanelManager(ISession session) + { + _session = session; + } + + public void init(ISyntaxHighlightTokenMatcherFactory syntaxHighlightTokenMatcherFactory, ToolsPopupAccessor tpa) + { + HashMap props = new HashMap(); + props.put(IParserEventsProcessorFactory.class.getName(), null); + + if(null != syntaxHighlightTokenMatcherFactory) + { + props.put(ISyntaxHighlightTokenMatcherFactory.class.getName(), syntaxHighlightTokenMatcherFactory); + } + + if(null != tpa) + { + props.put(ToolsPopupAccessor.class.getName(), tpa); + } + + + _entry = _session.getApplication().getSQLEntryPanelFactory().createSQLEntryPanel(_session, props); + + + _component = _entry.getTextComponent(); + if (false == _entry.getDoesTextComponentHaveScroller()) + { + _component = new JScrollPane(_entry.getTextComponent()); + _component.setBorder(BorderFactory.createEmptyBorder()); + } + + new UndoHandlerImpl(_session.getApplication(), _entry); + } + + public JComponent getComponent() + { + checkInit(); + return _component; + } + + private void checkInit() + { + if(null == _component) + { + throw new IllegalStateException("Call init() before using this object"); + } + } + + public ISQLEntryPanel getEntryPanel() + { + checkInit(); + return _entry; + } + + public void requestFocus() + { + checkInit(); + _entry.requestFocus(); + } + + protected ISession getSession() + { + return _session; + } + + +} Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/ExtendedColumnInfo.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/ExtendedColumnInfo.java 2011-03-13 17:40:55 UTC (rev 6186) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/ExtendedColumnInfo.java 2011-03-13 19:44:38 UTC (rev 6187) @@ -21,6 +21,7 @@ import net.sourceforge.squirrel_sql.fw.sql.TableColumnInfo; import java.io.Serializable; +import java.sql.Types; public class ExtendedColumnInfo implements Serializable { @@ -35,11 +36,13 @@ private String _simpleTableName; private String _qualifiedName; private String _remarks; + private int _columnTypeID; public ExtendedColumnInfo(TableColumnInfo info, String simpleTableName) { _columnName = info.getColumnName(); _columnType = info.getTypeName(); + _columnTypeID = info.getDataType(); _columnSize = info.getColumnSize(); _decimalDigits = info.getDecimalDigits(); _remarks = info.getRemarks(); @@ -103,6 +106,20 @@ return _simpleTableName; } + public int getColumnTypeID() + { + return _columnTypeID; + } + + public boolean isCharacterType() + { + return Types.VARCHAR == _columnTypeID + || Types.LONGVARCHAR == _columnTypeID + || Types.CHAR == _columnTypeID + || Types.NVARCHAR == _columnTypeID; + } + + /** * @see java.lang.Object#hashCode() */ Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/BaseMainPanelTab.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/BaseMainPanelTab.java 2011-03-13 17:40:55 UTC (rev 6186) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/BaseMainPanelTab.java 2011-03-13 19:44:38 UTC (rev 6187) @@ -21,6 +21,9 @@ import net.sourceforge.squirrel_sql.fw.util.log.LoggerController; import net.sourceforge.squirrel_sql.client.session.ISession; + +import java.awt.*; + /** * Base class for tabs to the added to the main tabbed panel. * @@ -89,7 +92,13 @@ } } - /** + @Override + public Component getTabComponent() + { + return null; + } + + /** * Refresh the component. */ protected abstract void refreshComponent(); Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/IMainPanelTab.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/IMainPanelTab.java 2011-03-13 17:40:55 UTC (rev 6186) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/IMainPanelTab.java 2011-03-13 19:44:38 UTC (rev 6187) @@ -34,6 +34,13 @@ */ String getTitle(); + /** + * + * @return if != null the return component is displayed instead of the title + */ + Component getTabComponent(); + + /** * Return the hint for the tab. * Added: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/objecttree/ObjectTreeDndTransfer.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/objecttree/ObjectTreeDndTransfer.java (rev 0) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/objecttree/ObjectTreeDndTransfer.java 2011-03-13 19:44:38 UTC (rev 6187) @@ -0,0 +1,24 @@ +package net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree; + +import net.sourceforge.squirrel_sql.fw.sql.ITableInfo; + +import java.util.List; + + +/** + * This class mainly exits to enable IDEs to find where dragged ObjectTree objects are received via usage search. + */ +public class ObjectTreeDndTransfer +{ + private List<ITableInfo> _selectedTables; + + public ObjectTreeDndTransfer(List<ITableInfo> selectedTables) + { + _selectedTables = selectedTables; + } + + public List<ITableInfo> getSelectedTables() + { + return _selectedTables; + } +} Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/objecttree/ObjectTreePanel.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/objecttree/ObjectTreePanel.java 2011-03-13 17:40:55 UTC (rev 6186) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/objecttree/ObjectTreePanel.java 2011-03-13 19:44:38 UTC (rev 6187) @@ -19,59 +19,15 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -import java.awt.BorderLayout; -import java.awt.Component; -import java.awt.Dimension; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import javax.swing.Action; -import javax.swing.BorderFactory; -import javax.swing.JMenu; -import javax.swing.JPanel; -import javax.swing.JScrollPane; -import javax.swing.JSplitPane; -import javax.swing.JTabbedPane; -import javax.swing.SwingUtilities; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; -import javax.swing.event.TreeModelListener; -import javax.swing.event.TreeSelectionEvent; -import javax.swing.event.TreeSelectionListener; -import javax.swing.tree.TreePath; - import net.sourceforge.squirrel_sql.client.session.IObjectTreeAPI; import net.sourceforge.squirrel_sql.client.session.ISession; import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.BaseDataSetTab; import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.DatabaseObjectInfoTab; import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.IObjectTab; -import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.database.CatalogsTab; -import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.database.ConnectionStatusTab; -import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.database.DataTypesTab; -import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.database.KeywordsTab; -import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.database.MetaDataTab; -import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.database.NumericFunctionsTab; -import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.database.SchemasTab; -import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.database.StringFunctionsTab; -import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.database.SystemFunctionsTab; -import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.database.TableTypesTab; -import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.database.TimeDateFunctionsTab; +import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.database.*; import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.procedure.ProcedureColumnsTab; -import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.table.ColumnPriviligesTab; -import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.table.ColumnsTab; -import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.table.ContentsTab; -import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.table.ExportedKeysTab; -import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.table.ImportedKeysTab; -import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.table.IndexesTab; -import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.table.PrimaryKeyTab; -import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.table.RowCountTab; -import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.table.RowIDTab; -import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.table.TablePriviligesTab; -import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.table.VersionColumnsTab; +import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.table.*; import net.sourceforge.squirrel_sql.client.session.properties.SessionProperties; import net.sourceforge.squirrel_sql.client.session.schemainfo.FilterMatcher; import net.sourceforge.squirrel_sql.client.util.IdentifierFactory; @@ -86,6 +42,21 @@ import net.sourceforge.squirrel_sql.fw.util.Utilities; import net.sourceforge.squirrel_sql.fw.util.log.ILogger; import net.sourceforge.squirrel_sql.fw.util.log.LoggerController; + +import javax.activation.DataHandler; +import javax.swing.*; +import javax.swing.event.*; +import javax.swing.tree.TreePath; +import java.awt.*; +import java.awt.datatransfer.DataFlavor; +import java.awt.datatransfer.Transferable; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + /** * This is the panel for the Object Tree tab. * @@ -93,9 +64,6 @@ */ public class ObjectTreePanel extends JPanel implements IObjectTreeAPI { - - private static final long serialVersionUID = -2257109602127706539L; - /** Logger for this class. */ private static final ILogger s_log = LoggerController.createLogger(ObjectTreePanel.class); @@ -110,8 +78,7 @@ private ObjectTree _tree; /** Split pane between the object tree and the data panel. */ - private final JSplitPane _splitPane = - new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); + private final JSplitPane _splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); /** * Empty data panel. Used if the object selected in the object @@ -151,7 +118,6 @@ */ public ObjectTreePanel(ISession session) { - super(); if (session == null) { throw new IllegalArgumentException("ISession == null"); @@ -164,17 +130,33 @@ createGUI(); -// session.getApplication().getThreadPool().addTask(new Runnable() -// { -// public void run() -// { - doBackgroundInitializations(); -// } -// }); + init(); + + initDnD(); + } - private void doBackgroundInitializations() + private void initDnD() { + _tree.setTransferHandler(new TransferHandler("DragedTreeNode") + { + @Override + protected Transferable createTransferable(JComponent c) + { + return new DataHandler(new ObjectTreeDndTransfer(getSelectedTables()), DataFlavor.javaJVMLocalObjectMimeType); + } + + public int getSourceActions(JComponent c) + { + return COPY; + } + + }); + _tree.setDragEnabled(true); + } + + private void init() + { try { // Register tabs to display in the details panel for database nodes. @@ -925,19 +907,11 @@ _splitPane.setOneTouchExpandable(true); _splitPane.setContinuousLayout(true); -// final JScrollPane sp = new JScrollPane(); -// sp.setBorder(BorderFactory.createEmptyBorder()); -// sp.setViewportView(_tree); -// sp.setPreferredSize(new Dimension(200, 200)); _splitPane.add(new LeftPanel(), JSplitPane.LEFT); add(_splitPane, BorderLayout.CENTER); _splitPane.setDividerLocation(200); -// _tree.addTreeSelectionListener(new ObjectTreeSelectionListener()); -// _objTreeSelLis = new ObjectTreeSelectionListener(); -// _tree.addTreeSelectionListener(_objTreeSelLis); - _tree.setSelectionRow(0); } Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/objecttree/expanders/IndexParentInfo.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/objecttree/expanders/IndexParentInfo.java 2011-03-13 17:40:55 UTC (rev 6186) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/objecttree/expanders/IndexParentInfo.java 2011-03-13 19:44:38 UTC (rev 6187) @@ -32,8 +32,6 @@ */ public class IndexParentInfo extends DatabaseObjectInfo { - private static final long serialVersionUID = 1L; - public interface IPropertyNames { String SIMPLE_NAME = "simpleName"; String TABLE_INFO = "tableInfo"; Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/objecttree/expanders/TriggerParentInfo.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/objecttree/expanders/TriggerParentInfo.java 2011-03-13 17:40:55 UTC (rev 6186) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/objecttree/expanders/TriggerParentInfo.java 2011-03-13 19:44:38 UTC (rev 6187) @@ -32,8 +32,6 @@ */ public class TriggerParentInfo extends DatabaseObjectInfo { - private static final long serialVersionUID = 1L; - public interface IPropertyNames { String SIMPLE_NAME = "simpleName"; String TABLE_INFO = "tableInfo"; Modified: trunk/sql12/app/src/main/resources/net/sourceforge/squirrel_sql/client/session/mainpanel/objecttree/I18NStrings.properties =================================================================== --- trunk/sql12/app/src/main/resources/net/sourceforge/squirrel_sql/client/session/mainpanel/objecttree/I18NStrings.properties 2011-03-13 17:40:55 UTC (rev 6186) +++ trunk/sql12/app/src/main/resources/net/sourceforge/squirrel_sql/client/session/mainpanel/objecttree/I18NStrings.properties 2011-03-13 19:44:38 UTC (rev 6187) @@ -1,2 +1,4 @@ FindInObjectTreePanel.find=Find in Object tree (placeholders % or _ may be used) -FindInObjectTreePanel.applyAsFilter=Toggle apply search string as Object tree filter \ No newline at end of file +FindInObjectTreePanel.applyAsFilter=Toggle apply search string as Object tree filter +RightDisplayController.treeDetails=Tree details +RightDisplayController.RightSideDisplays=Right side displays \ No newline at end of file Modified: trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/sql/DataTypeInfo.java =================================================================== --- trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/sql/DataTypeInfo.java 2011-03-13 17:40:55 UTC (rev 6186) +++ trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/sql/DataTypeInfo.java 2011-03-13 19:44:38 UTC (rev 6187) @@ -20,9 +20,7 @@ // TODO: Put in all the property accessors public class DataTypeInfo extends DatabaseObjectInfo { - static final long serialVersionUID = -3501323961506084527L; - - private final int _dataType; + private final int _dataType; private final int _precision; private final String _literalPrefix; private final String _literalSuffix; Modified: trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/sql/DatabaseObjectInfo.java =================================================================== --- trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/sql/DatabaseObjectInfo.java 2011-03-13 17:40:55 UTC (rev 6186) +++ trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/sql/DatabaseObjectInfo.java 2011-03-13 19:44:38 UTC (rev 6187) @@ -41,7 +41,6 @@ String QUALIFIED_NAME = "qualifiedName"; } - static final long serialVersionUID = -7138016566181091160L; /** Catalog name. Can be <CODE>null</CODE> */ private final String _catalog; Modified: trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/sql/ForeignKeyInfo.java =================================================================== --- trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/sql/ForeignKeyInfo.java 2011-03-13 17:40:55 UTC (rev 6186) +++ trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/sql/ForeignKeyInfo.java 2011-03-13 19:44:38 UTC (rev 6187) @@ -24,8 +24,6 @@ */ public class ForeignKeyInfo extends DatabaseObjectInfo { - static final long serialVersionUID = -4223544514849570902L; - /** * JavaBean property names for this class. */ Modified: trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/sql/IndexInfo.java =================================================================== --- trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/sql/IndexInfo.java 2011-03-13 17:40:55 UTC (rev 6186) +++ trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/sql/IndexInfo.java 2011-03-13 19:44:38 UTC (rev 6187) @@ -25,8 +25,6 @@ */ public class IndexInfo extends DatabaseObjectInfo { - private static final long serialVersionUID = 4146807206360206252L; - public static enum IndexType { STATISTIC, CLUSTERED, Modified: trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/sql/PrimaryKeyInfo.java =================================================================== --- trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/sql/PrimaryKeyInfo.java 2011-03-13 17:40:55 UTC (rev 6186) +++ trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/sql/PrimaryKeyInfo.java 2011-03-13 19:44:38 UTC (rev 6187) @@ -26,9 +26,7 @@ */ public class PrimaryKeyInfo extends DatabaseObjectInfo { - static final long serialVersionUID = 4785889679696720264L; - - /** + /** * the name of the column which belongs to a list of columns that form a * unique key for a table */ Modified: trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/sql/ProcedureInfo.java =================================================================== --- trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/sql/ProcedureInfo.java 2011-03-13 17:40:55 UTC (rev 6186) +++ trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/sql/ProcedureInfo.java 2011-03-13 19:44:38 UTC (rev 6187) @@ -24,8 +24,6 @@ public class ProcedureInfo extends DatabaseObjectInfo implements IProcedureInfo { - static final long serialVersionUID = -4111528608716386156L; - /** Internationalized strings for this class. */ private static final StringManager s_stringMgr = StringManagerFactory.getStringManager(ProcedureInfo.class); Modified: trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/sql/TableColumnInfo.java =================================================================== --- trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/sql/TableColumnInfo.java 2011-03-13 17:40:55 UTC (rev 6186) +++ trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/sql/TableColumnInfo.java 2011-03-13 19:44:38 UTC (rev 6187) @@ -19,9 +19,8 @@ */ public class TableColumnInfo extends DatabaseObjectInfo { - static final long serialVersionUID = 3529392685978921375L; - - private final String _tableName; + + private final String _tableName; private final String _columnName; private final int _dataType; private final String _typeName; Modified: trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/sql/TableInfo.java =================================================================== --- trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/sql/TableInfo.java 2011-03-13 17:40:55 UTC (rev 6186) +++ trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/sql/TableInfo.java 2011-03-13 19:44:38 UTC (rev 6187) @@ -22,8 +22,6 @@ public class TableInfo extends DatabaseObjectInfo implements ITableInfo { - static final long serialVersionUID = -3184857504910012169L; - /** Table Type. */ private final String _tableType; Modified: trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/sql/UDTInfo.java =================================================================== --- trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/sql/UDTInfo.java 2011-03-13 17:40:55 UTC (rev 6186) +++ trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/sql/UDTInfo.java 2011-03-13 19:44:38 UTC (rev 6187) @@ -20,8 +20,6 @@ public class UDTInfo extends DatabaseObjectInfo implements IUDTInfo { - static final long serialVersionUID = 8215062701260471438L; - /** Java class name. */ private final String _javaClassName; Modified: trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/sql/dbobj/BestRowIdentifier.java =================================================================== --- trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/sql/dbobj/BestRowIdentifier.java 2011-03-13 17:40:55 UTC (rev 6186) +++ trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/sql/dbobj/BestRowIdentifier.java 2011-03-13 19:44:38 UTC (rev 6187) @@ -28,9 +28,7 @@ */ public class BestRowIdentifier extends DatabaseObjectInfo { - static final long serialVersionUID = 7587093034289367642L; - - final private int _scope; + final private int _scope; final private String _colName; final private short _sqlDataType; final private String _typeName; Modified: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/AddToGraphAction.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/AddToGraphAction.java 2011-03-13 17:40:55 UTC (rev 6186) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/AddToGraphAction.java 2011-03-13 19:44:38 UTC (rev 6187) @@ -38,7 +38,7 @@ { ObjectTreeNode[] selectedNodes = _session.getSessionSheet().getObjectTreePanel().getSelectedNodes(); - Point[] refCascadeIndent = new Point[1]; + Positioner positioner = new Positioner(); GraphController toAddTo = null; for (int i = 0; i < selectedNodes.length; i++) @@ -72,7 +72,7 @@ } } - toAddTo.addTable(selectedNodes[i], refCascadeIndent); + toAddTo.addTable(selectedNodes[i], positioner); } } Added: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/AggregateFunctions.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/AggregateFunctions.java (rev 0) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/AggregateFunctions.java 2011-03-13 19:44:38 UTC (rev 6187) @@ -0,0 +1,81 @@ +package net.sourceforge.squirrel_sql.plugins.graph; + +import net.sourceforge.squirrel_sql.fw.util.StringManager; +import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory; + +import static net.sourceforge.squirrel_sql.plugins.graph.GraphPluginResources.IKeys.*; + +public enum AggregateFunctions +{ + NONE(0, "<NONE>",AGG_FCT, AggFct18n.s_stringMgr.getString("AggregateFunctions.undefined"), AggFct18n.s_stringMgr.getString("AggregateFunctions.undefinedTT")), + SUM(1, "SUM", AGG_SUM, AggFct18n.s_stringMgr.getString("AggregateFunctions.sum"), AggFct18n.s_stringMgr.getString("AggregateFunctions.sumTT")), + MAX(2, "MAX", AGG_MAX, AggFct18n.s_stringMgr.getString("AggregateFunctions.max"), AggFct18n.s_stringMgr.getString("AggregateFunctions.maxTT")), + MIN(3, "MIN", AGG_MIN, AggFct18n.s_stringMgr.getString("AggregateFunctions.min"), AggFct18n.s_stringMgr.getString("AggregateFunctions.minTT")), + COUNT(4, "COUNT", AGG_COUNT, AggFct18n.s_stringMgr.getString("AggregateFunctions.count"), AggFct18n.s_stringMgr.getString("AggregateFunctions.countTT")); + + public static final Object CLIENT_PROP_NAME = AggregateFunctions.class.getName(); + + private int _index; + private String _image; + private String _name; + private String _toolTip; + private String _sql; + + + AggregateFunctions(int index, String sql, String image, String name, String toolTip) + { + _index = index; + _sql = sql; + _image = image; + _name = name; + _toolTip = toolTip; + } + + + public String getImage() + { + return _image; + } + + @Override + public String toString() + { + return _name; + } + + + public String getToolTip() + { + return _toolTip; + } + + public int getIndex() + { + return _index; + } + + public static AggregateFunctions getForIndex(int aggregateFunctionIndex) + { + for (AggregateFunctions aggregateFunction : values()) + { + if(aggregateFunction._index == aggregateFunctionIndex) + { + return aggregateFunction; + } + } + + throw new IllegalArgumentException("Unknown aggregateFunctionIndex " + aggregateFunctionIndex); + + } + + public String getSQL() + { + return _sql; + } +} + +class AggFct18n +{ + static final StringManager s_stringMgr = StringManagerFactory.getStringManager(AggFct18n.class); + +} Modified: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ColumnInfo.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ColumnInfo.java 2011-03-13 17:40:55 UTC (rev 6186) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ColumnInfo.java 2011-03-13 19:44:38 UTC (rev 6187) @@ -1,6 +1,7 @@ package net.sourceforge.squirrel_sql.plugins.graph; import net.sourceforge.squirrel_sql.plugins.graph.xmlbeans.ColumnInfoXmlBean; +import net.sourceforge.squirrel_sql.plugins.graph.xmlbeans.QueryDataXmlBean; public class ColumnInfo extends Object @@ -20,6 +21,8 @@ private String _toString; + private QueryData _queryData = new QueryData(); + private ColumnInfoModelEventDispatcher _columnInfoModelEventDispatcher; public ColumnInfo(String columnName, String columnType, int columnSize, int decimalDigits, boolean nullable) { @@ -37,6 +40,7 @@ public ColumnInfo(ColumnInfoXmlBean xmlBean) { this(xmlBean.getColumnName(), xmlBean.getColumnType(), xmlBean.getColumnSize(), xmlBean.getDecimalDigits(), xmlBean.isNullable()); + _queryData = new QueryData(xmlBean.getQueryDataXmlBean()); _index = xmlBean.getIndex(); if(xmlBean.isPrimaryKey()) { @@ -65,6 +69,15 @@ ret.setConstraintName(_constraintName); ret.setNonDbConstraint(_nonDbConstraint); + QueryDataXmlBean queryDataXmlBean = new QueryDataXmlBean(); + queryDataXmlBean.setOperatorIndex(_queryData.getOperator().getIndex()); + queryDataXmlBean.setAggregateFunctionIndex(_queryData.getAggregateFunction().getIndex()); + queryDataXmlBean.setFilterValue(_queryData.getFilterValue()); + queryDataXmlBean.setInSelectClause(_queryData.isInSelectClause()); + + ret.setQueryDataXmlBean(queryDataXmlBean); + + return ret; } @@ -155,4 +168,30 @@ { return _nonDbConstraint; } + + + public QueryData getQueryData() + { + return _queryData; + } + + public String getColumnName() + { + return _columnName; + } + + public void setQueryData(QueryData queryData) + { + _queryData = queryData; + } + + public void setColumnInfoModelEventDispatcher(ColumnInfoModelEventDispatcher columnInfoModelEventDispatcher) + { + _columnInfoModelEventDispatcher = columnInfoModelEventDispatcher; + } + + public ColumnInfoModelEventDispatcher getColumnInfoModelEventDispatcher() + { + return _columnInfoModelEventDispatcher; + } } Added: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ColumnInfoModel.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ColumnInfoModel.java (rev 0) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ColumnInfoModel.java 2011-03-13 19:44:38 UTC (rev 6187) @@ -0,0 +1,135 @@ +package net.sourceforge.squirrel_sql.plugins.graph; + +import java.util.ArrayList; +import java.util.Arrays; + +public class ColumnInfoModel +{ + private ColumnInfo[] _colInfos = new ColumnInfo[0]; + private ColumnInfo[] _orderedColumnInfos = new ColumnInfo[0]; + private ArrayList<ColumnInfoModelListener> _listeners = new ArrayList<ColumnInfoModelListener>(); + private ColumnInfoModelEventDispatcher _columnInfoModelEventDispatcher; + + + public ColumnInfoModel() + { + _columnInfoModelEventDispatcher = new ColumnInfoModelEventDispatcher() + { + @Override + public void fireChanged(TableFramesModelChangeType changeType) + { + ColumnInfoModel.this.fireChanged(changeType); + } + }; + } + + public int getColCount() + { + return _colInfos.length; + } + + public ColumnInfo getColAt(int ix) + { + return _colInfos[ix]; + } + + public ColumnInfo[] getAll() + { + return _colInfos; + } + + public void orderBy(OrderType orderType) + { + if(OrderType.ORDER_DB == orderType) + { + _orderedColumnInfos = _colInfos; + } + else + { + _orderedColumnInfos = new ColumnInfo[_colInfos.length]; + System.arraycopy(_colInfos, 0, _orderedColumnInfos, 0, _colInfos.length); + Arrays.sort(_orderedColumnInfos, orderType.getComparator()); + } + + for (int i = 0; i < _orderedColumnInfos.length; i++) + { + _orderedColumnInfos[i].setIndex(i); + } + + fireChanged(TableFramesModelChangeType.COLUMN_SORTING); + } + + public ColumnInfo findColumnInfo(String colName) + { + for (int i = 0; i < _colInfos.length; i++) + { + if(_colInfos[i].getName().equals(colName)) + { + return _colInfos[i]; + } + } + + throw new IllegalArgumentException("Column " + colName + " not found"); + } + + public ColumnInfo getOrderedColAt(int ix) + { + return _orderedColumnInfos[ix]; + } + + public void addColumnInfoModelListener(ColumnInfoModelListener listener) + { + _listeners.add(listener); + } + + public void querySelectAll(boolean b) + { + for (ColumnInfo colInfo : _colInfos) + { + colInfo.getQueryData().setInSelectClause(b); + } + + fireChanged(TableFramesModelChangeType.COLUMN_SELECT); + } + + + public void clearAllFilters() + { + for (ColumnInfo colInfo : _colInfos) + { + colInfo.getQueryData().clearFilter(); + } + + fireChanged(TableFramesModelChangeType.COLUMN_WHERE); + } + + private void fireChanged(TableFramesModelChangeType changeType) + { + ColumnInfoModelListener[] listeners = _listeners.toArray(new ColumnInfoModelListener[_listeners.size()]); + + for (ColumnInfoModelListener listener : listeners) + { + listener.columnInfosChanged(changeType); + } + } + + public void initCols(ColumnInfo[] refreshedCols, OrderType columnOrderType) + { + for (ColumnInfo colInfoNew : refreshedCols) + { + for (ColumnInfo colInfoOld : _colInfos) + { + if(colInfoNew.getColumnName().equalsIgnoreCase(colInfoOld.getColumnName())) + { + colInfoNew.setQueryData(colInfoOld.getQueryData()); + } + } + + colInfoNew.setColumnInfoModelEventDispatcher(_columnInfoModelEventDispatcher); + } + + _colInfos = refreshedCols; + + orderBy(columnOrderType); + } +} Added: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ColumnInfoModelEventDispatcher.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ColumnInfoModelEventDispatcher.java (rev 0) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ColumnInfoModelEventDispatcher.java 2011-03-13 19:44:38 UTC (rev 6187) @@ -0,0 +1,6 @@ +package net.sourceforge.squirrel_sql.plugins.graph; + +public interface ColumnInfoModelEventDispatcher +{ + void fireChanged(TableFramesModelChangeType changeType); +} Added: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ColumnInfoModelListener.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ColumnInfoModelListener.java (rev 0) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ColumnInfoModelListener.java 2011-03-13 19:44:38 UTC (rev 6187) @@ -0,0 +1,6 @@ +package net.sourceforge.squirrel_sql.plugins.graph; + +public interface ColumnInfoModelListener +{ + void columnInfosChanged(TableFramesModelChangeType changeType); +} Modified: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ColumnTextArea.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ColumnTextArea.java 2011-03-13 17:40:55 UTC (rev 6186) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ColumnTextArea.java 2011-03-13 19:44:38 UTC (rev 6187) @@ -3,14 +3,15 @@ import net.sourceforge.squirrel_sql.client.session.ISession; import javax.swing.*; +import java.awt.*; import java.awt.event.MouseEvent; -import java.awt.event.MouseAdapter; -public class ColumnTextArea extends JTextArea implements DndColumn +public class ColumnTextArea extends JTextArea implements DndColumn, IColumnTextArea { private TableToolTipProvider _toolTipProvider; private DndHandler _dndHandler; + private ColumnInfoModel _columnInfoModel; public ColumnTextArea(TableToolTipProvider toolTipProvider, DndCallback dndCallback, ISession session) { @@ -26,15 +27,34 @@ /** * Not named setColumns() because it would be an overload. - * @param columnInfos + * @param columnInfoModel */ - public void setGraphColumns(ColumnInfo[] columnInfos) + public void setColumnInfoModel(ColumnInfoModel columnInfoModel) { + _columnInfoModel = columnInfoModel; + + _columnInfoModel.addColumnInfoModelListener(new ColumnInfoModelListener() + { + @Override + public void columnInfosChanged(TableFramesModelChangeType changeType) + { + if (TableFramesModelChangeType.COLUMN_SORTING == changeType) + { + initColumnInfos(); + } + } + }); + + initColumnInfos(); + } + + private void initColumnInfos() + { StringBuffer sb = new StringBuffer(); - for (int i = 0; i < columnInfos.length; i++) + for (int i = 0; i < _columnInfoModel.getColCount(); i++) { - columnInfos[i].setIndex(i); - sb.append(columnInfos[i]).append('\n'); + //_columnInfoModel.getOrderedColAt(i).setIndex(i); + sb.append(_columnInfoModel.getOrderedColAt(i)).append('\n'); } setText(sb.toString()); } @@ -48,4 +68,35 @@ { _dndHandler.setDndEvent(dndEvent); } + + @Override + public Point getLocationInColumnTextArea() + { + return new Point(0,0); + } + + @Override + public int getColumnHeight() + { + FontMetrics fm = getGraphics().getFontMetrics(getFont()); + return fm.getHeight(); + } + + @Override + public int getMaxWidth() + { + int maxSize = 0; + FontMetrics fm = getFontMetrics(getFont()); + + for (int i = 0; i < _columnInfoModel.getColCount(); i++) + { + int buf = fm.stringWidth(_columnInfoModel.getColAt(i).toString()); + if(maxSize < buf) + { + maxSize = buf; + } + } + + return maxSize; + } } Modified: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ConfigureNonDbConstraintDlg.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ConfigureNonDbConstraintDlg.java 2011-03-13 17:40:55 UTC (rev 6186) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ConfigureNonDbConstraintDlg.java 2011-03-13 19:44:38 UTC (rev 6187) @@ -8,6 +8,7 @@ import net.sourceforge.squirrel_sql.client.gui.mainframe.MainFrame; import javax.swing.*; +import javax.swing.border.TitledBorder; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; @@ -34,32 +35,37 @@ GridBagConstraints gbc; - gbc = new GridBagConstraints(0,0,1,1,1,1, GridBagConstraints.NORTHWEST, GridBagConstraints.BOTH, new Insets(5,5,5,5), 0,0); + gbc = new GridBagConstraints(0,1,1,1,1,1, GridBagConstraints.NORTHWEST, GridBagConstraints.BOTH, new Insets(5,5,5,5), 0,0); _table = new DataSetViewerTablePanel(); _table.init(null); - getContentPane().add(new JScrollPane(_table.getComponent()), gbc); + JPanel pnlBordered = new JPanel(new GridLayout(1,1)); + pnlBordered.add(new JScrollPane(_table.getComponent())); + TitledBorder titledBorder = BorderFactory.createTitledBorder(s_stringMgr.getString("graph.ConfigureNonDbConstraintDlg.tblTitle")); + titledBorder.setTitleFont(titledBorder.getTitleFont().deriveFont(Font.BOLD)); + pnlBordered.setBorder(titledBorder); + getContentPane().add(pnlBordered, gbc); - gbc = new GridBagConstraints(0,1,1,1,0,0, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(0,5,10,5), 0,0); + gbc = new GridBagConstraints(0,2,1,1,0,0, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(0,5,10,5), 0,0); _btnRemove = new JButton(s_stringMgr.getString("graph.ConfigureNonDbConstraintDlg.remove")); getContentPane().add(_btnRemove, gbc); - gbc = new GridBagConstraints(0,2,1,1,0,0, GridBagConstraints.NORTHWEST, GridBagConstraints.BOTH, new Insets(5,5,5,5), 0,0); + gbc = new GridBagConstraints(0,3,1,1,0,0, GridBagConstraints.NORTHWEST, GridBagConstraints.BOTH, new Insets(5,5,5,5), 0,0); getContentPane().add(createControlsPanel(fkTableName, pkTableName), gbc); - gbc = new GridBagConstraints(0,3,1,1,0,0, GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, new Insets(5,5,5,5), 0,0); + gbc = new GridBagConstraints(0,4,1,1,0,0, GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, new Insets(5,5,5,5), 0,0); getContentPane().add(createNamePanel(), gbc); - gbc = new GridBagConstraints(0,4,1,1,0,0, GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, new Insets(5,5,5,5), 0,0); + gbc = new GridBagConstraints(0,5,1,1,0,0, GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, new Insets(5,5,5,5), 0,0); MultipleLineLabel lblHint = new MultipleLineLabel(s_stringMgr.getString("graph.ConfigureNonDbConstraintDlg.NonDbConstraintHint")); lblHint.setForeground(Color.red); getContentPane().add(lblHint, gbc); - gbc = new GridBagConstraints(0,5,1,1,0,0, GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, new Insets(5,5,5,5), 0,0); + gbc = new GridBagConstraints(0,6,1,1,0,0, GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, new Insets(5,5,5,5), 0,0); getContentPane().add(createButtonsPanel(), gbc); - setSize(800, 500); + setSize(800, 530); GUIUtils.centerWithinScreen(this); @@ -146,6 +152,9 @@ ret.add(createAddButtonsPanel(), gbc); + TitledBorder titledBorder = BorderFactory.createTitledBorder(s_stringMgr.getString("graph.ConfigureNonDbConstraintDlg.AddColsTitle")); + titledBorder.setTitleFont(titledBorder.getTitleFont().deriveFont(Font.BOLD)); + ret.setBorder(titledBorder); return ret; } Modified: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ConstraintData.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ConstraintData.java 2011-03-13 17:40:55 UTC (rev 6186) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ConstraintData.java 2011-03-13 19:44:38 UTC (rev 6187) @@ -16,6 +16,7 @@ private ColumnInfo[] _columnInfos = new ColumnInfo[0]; private boolean _showThisConstraintName; + private ConstraintQueryData _constraintQueryData = new ConstraintQueryData(); public ConstraintData(String pkTableName, String fkTableName, String constraintName) @@ -29,8 +30,14 @@ _fkTableName = constraintDataXmlBean.getFkTableName(); _constraintName = constraintDataXmlBean.getConstraintName(); _nonDbConstraint = constraintDataXmlBean.isNonDbConstraint(); - _showThisConstraintName = constraintDataXmlBean.isShowThisConstraintName(); + _showThisConstraintName = constraintDataXmlBean.isShowThisConstraintName(); + if(null != constraintDataXmlBean.getConstraintQueryDataXmlBean()) + { + _constraintQueryData = new ConstraintQueryData(constraintDataXmlBean.getConstraintQueryDataXmlBean()); + } + + _columnInfos = new ColumnInfo[constraintDataXmlBean.getColumnInfoXmlBeans().length]; for ... [truncated message content] |
From: <man...@us...> - 2011-03-13 21:27:17
|
Revision: 6189 http://squirrel-sql.svn.sourceforge.net/squirrel-sql/?rev=6189&view=rev Author: manningr Date: 2011-03-13 21:27:11 +0000 (Sun, 13 Mar 2011) Log Message: ----------- Added missing dependencies. Modified Paths: -------------- trunk/sql12/fw/pom.xml trunk/sql12/installer/pom.xml Modified: trunk/sql12/fw/pom.xml =================================================================== --- trunk/sql12/fw/pom.xml 2011-03-13 20:37:16 UTC (rev 6188) +++ trunk/sql12/fw/pom.xml 2011-03-13 21:27:11 UTC (rev 6189) @@ -100,10 +100,15 @@ <version>3.1</version> </dependency> <dependency> + <groupId>commons-lang</groupId> + <artifactId>commons-lang</artifactId> + <version>1.0</version> + </dependency> + <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.0.4</version> - </dependency> + </dependency> <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> @@ -220,6 +225,11 @@ <groupId>org.mockito</groupId> <artifactId>mockito-all</artifactId> </dependency> + <dependency> + <groupId>xml-apis</groupId> + <artifactId>xml-apis</artifactId> + <version>1.0.b2</version> + </dependency> </dependencies> <build> <plugins> Modified: trunk/sql12/installer/pom.xml =================================================================== --- trunk/sql12/installer/pom.xml 2011-03-13 20:37:16 UTC (rev 6188) +++ trunk/sql12/installer/pom.xml 2011-03-13 21:27:11 UTC (rev 6189) @@ -71,7 +71,7 @@ <plugin> <groupId>net.sf.squirrel-sql</groupId> <artifactId>squirrelsql-dependency-plugin</artifactId> - <version>1.0.7</version> + <version>1.0.8-SNAPSHOT</version> <executions> <execution> <id>application-libraries</id> @@ -93,12 +93,15 @@ <includedArtifact>com.fifesoft:autocomplete</includedArtifact> <includedArtifact>axis:axis</includedArtifact> <includedArtifact>axis:axis-jaxrpc</includedArtifact> + <includedArtifact>axis:axis-saaj</includedArtifact> + <includedArtifact>axis:axis-wsdl4j</includedArtifact> <includedArtifact>cglib:cglib</includedArtifact> <includedArtifact>com.fifesoft.rtext:common</includedArtifact> <includedArtifact>commons-cli:commons-cli</includedArtifact> <includedArtifact>commons-codec:commons-codec</includedArtifact> <includedArtifact>commons-collections:commons-collections</includedArtifact> <includedArtifact>commons-httpclient:commons-httpclient</includedArtifact> + <includedArtifact>commons-lang:commons-lang</includedArtifact> <includedArtifact>commons-logging:commons-logging</includedArtifact> <includedArtifact>com.jgoodies:forms</includedArtifact> <includedArtifact>net.sf.squirrel-sql:fw</includedArtifact> @@ -134,6 +137,7 @@ <includedArtifact>org.swinglabs:swing-worker</includedArtifact> <includedArtifact>com.ibm.icu:icu4j</includedArtifact> <includedArtifact>org.mod4j.org.eclipse:osgi</includedArtifact> + <includedArtifact>xml-apis:xml-apis</includedArtifact> </includedArtifacts> <outputDirectory>${staging.dir}/lib</outputDirectory> </configuration> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ger...@us...> - 2011-03-14 23:30:09
|
Revision: 6192 http://squirrel-sql.svn.sourceforge.net/squirrel-sql/?rev=6192&view=rev Author: gerdwagner Date: 2011-03-14 23:30:01 +0000 (Mon, 14 Mar 2011) Log Message: ----------- More Query Builder Modified Paths: -------------- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/gui/session/SessionPanel.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/gui/GUIUtils.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphController.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphMainPanelTab.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphPlugin.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/xmlbeans/GraphXmlSerializer.java Added Paths: ----------- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/window/ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/window/GraphWindowController.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/window/GraphWindowControllerListener.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/window/TabToWindowHandler.java trunk/sql12/plugins/graph/src/main/resources/net/sourceforge/squirrel_sql/plugins/graph/window/ trunk/sql12/plugins/graph/src/main/resources/net/sourceforge/squirrel_sql/plugins/graph/window/I18NStrings.properties Removed Paths: ------------- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/DefaultGraphDisplay.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/IGraphDisplay.java Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/gui/session/SessionPanel.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/gui/session/SessionPanel.java 2011-03-14 10:29:18 UTC (rev 6191) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/gui/session/SessionPanel.java 2011-03-14 23:30:01 UTC (rev 6192) @@ -508,8 +508,13 @@ { _mainPanelFactory = panelFactory; } - - + + public int getTabCount() + { + return _mainTabPane.getTabbedPane().getTabCount(); + } + + private class MyToolBar extends ToolBar { private static final long serialVersionUID = 1L; Modified: trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/gui/GUIUtils.java =================================================================== --- trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/gui/GUIUtils.java 2011-03-14 10:29:18 UTC (rev 6191) +++ trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/gui/GUIUtils.java 2011-03-14 23:30:01 UTC (rev 6192) @@ -456,4 +456,29 @@ } return result.toString(); } + + public static Point getScreenLocationFor(Component component) + { + Component comp = component; + + Point ret = new Point(0,0); + + for(;;) + { + Point buf; + if(comp instanceof Window) + { + buf = comp.getLocationOnScreen(); + ret.translate(buf.x, buf.y); + return ret; + } + else + { + buf = comp.getLocation(); + ret.translate(buf.x, buf.y); + comp = comp.getParent(); + } + + } + } } Deleted: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/DefaultGraphDisplay.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/DefaultGraphDisplay.java 2011-03-14 10:29:18 UTC (rev 6191) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/DefaultGraphDisplay.java 2011-03-14 23:30:01 UTC (rev 6192) @@ -1,26 +0,0 @@ -package net.sourceforge.squirrel_sql.plugins.graph; - -import net.sourceforge.squirrel_sql.client.session.ISession; - -public class DefaultGraphDisplay implements IGraphDisplay -{ - @Override - public void showGraph(GraphMainPanelTab graphPane, ISession session) - { - session.getSessionSheet().addMainTab(graphPane); - } - - @Override - public void removeGraph(GraphMainPanelTab graphPane, ISession session) - { - session.getSessionSheet().removeMainTab(graphPane); - } - - @Override - public void renameGraph(GraphMainPanelTab graphPane, ISession session, String newName) - { - int index = session.getSessionSheet().removeMainTab(graphPane); - graphPane.setTitle(newName); - session.getSessionSheet().insertMainTab(graphPane, index); - } -} Modified: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphController.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphController.java 2011-03-14 10:29:18 UTC (rev 6191) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphController.java 2011-03-14 23:30:01 UTC (rev 6192) @@ -3,6 +3,7 @@ import net.sourceforge.squirrel_sql.client.session.ISession; import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.ObjectTreeNode; import net.sourceforge.squirrel_sql.fw.sql.ITableInfo; +import net.sourceforge.squirrel_sql.plugins.graph.window.TabToWindowHandler; import net.sourceforge.squirrel_sql.plugins.graph.xmlbeans.GraphControllerXmlBean; import net.sourceforge.squirrel_sql.plugins.graph.xmlbeans.GraphXmlSerializer; import net.sourceforge.squirrel_sql.plugins.graph.xmlbeans.TableFrameControllerXmlBean; @@ -17,7 +18,6 @@ public class GraphController implements GraphControllerAccessor { private ISession _session; - private GraphMainPanelTab _graphPane; private GraphPanelController _panelController; private TableFramesModel _tableFramesModel = new TableFramesModel(); @@ -26,14 +26,13 @@ private AddTableListener _addTableListener; private GraphDesktopListener _graphDesktopListener; private GraphPlugin _plugin; - private DefaultGraphDisplay _graphDisplay; + private TabToWindowHandler _tabToWindowHandler; private GraphXmlSerializer _xmlSerializer; - public GraphController(ISession session, GraphPlugin plugin, GraphXmlSerializer xmlSerializer, DefaultGraphDisplay graphDisplay) + public GraphController(ISession session, GraphPlugin plugin, GraphXmlSerializer xmlSerializer) { _session = session; _plugin = plugin; - _graphDisplay = graphDisplay; _graphDesktopListener = new GraphDesktopListener() { @@ -96,11 +95,12 @@ }; _panelController = new GraphPanelController(_tableFramesModel, _graphDesktopListener, _session, _plugin); - _graphPane = new GraphMainPanelTab(_panelController, _plugin); + _tabToWindowHandler = new TabToWindowHandler(_panelController, _session, _plugin); + if(null == xmlSerializer) { - _xmlSerializer = new GraphXmlSerializer(_plugin, _session, _graphPane, null); + _xmlSerializer = new GraphXmlSerializer(_plugin, _session, _tabToWindowHandler.getTitle(), null); } else { @@ -119,18 +119,18 @@ if(null != xmlSerializer) { graphControllerXmlBean = _xmlSerializer.read(); - _graphPane.setTitle(graphControllerXmlBean.getTitle()); + _tabToWindowHandler.setTitle(graphControllerXmlBean.getTitle()); _panelController.initMode(Mode.getForIndex(graphControllerXmlBean.getModeIndex()), graphControllerXmlBean.getZoomerXmlBean(), graphControllerXmlBean.getPrintXmlBean()); _panelController.getDesktopController().setShowConstraintNames(graphControllerXmlBean.isShowConstraintNames()); _panelController.getDesktopController().setShowQualifiedTableNames(graphControllerXmlBean.isShowQualifiedTableNames()); } else { - _graphPane.setTitle(_plugin.patchName(_graphPane.getTitle(), _session)); + _tabToWindowHandler.setTitle(_plugin.patchName(_tabToWindowHandler.getTitle(), _session)); _panelController.initMode(Mode.DEFAULT, null, null); } - _graphDisplay.showGraph(_graphPane, _session); + _tabToWindowHandler.showGraph(); if(null != graphControllerXmlBean) { @@ -176,13 +176,13 @@ private void removeGraph() { _xmlSerializer.remove(); - _graphDisplay.removeGraph(_graphPane, _session); + _tabToWindowHandler.removeGraph(); _plugin.removeGraphController(this, _session); } private void renameGraph(String newName) { - if(newName.equals(_graphPane.getTitle())) + if(newName.equals(_tabToWindowHandler.getTitle())) { return; } @@ -190,7 +190,7 @@ newName = _plugin.patchName(newName, _session); _xmlSerializer.rename(newName); - _graphDisplay.renameGraph(_graphPane, _session, newName); + _tabToWindowHandler.renameGraph(newName); saveGraph(); } @@ -198,7 +198,7 @@ public void saveGraph() { GraphControllerXmlBean xmlBean = new GraphControllerXmlBean(); - xmlBean.setTitle(_graphPane.getTitle()); + xmlBean.setTitle(_tabToWindowHandler.getTitle()); xmlBean.setShowConstraintNames(_panelController.getDesktopController().isShowConstraintNames()); xmlBean.setZoomerXmlBean(_panelController.getDesktopController().getZoomer().getXmlBean()); xmlBean.setPrintXmlBean(_panelController.getDesktopController().getZoomPrintController().getPrintXmlBean()); @@ -424,7 +424,7 @@ public String getTitle() { - return _graphPane.getTitle(); + return _tabToWindowHandler.getTitle(); } public String toString() Modified: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphMainPanelTab.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphMainPanelTab.java 2011-03-14 10:29:18 UTC (rev 6191) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphMainPanelTab.java 2011-03-14 23:30:01 UTC (rev 6192) @@ -19,6 +19,7 @@ private JPanel _tabComponent; private JLabel _lblTitle; + private JButton _btnToWindow; public GraphMainPanelTab(GraphPanelController panelController, GraphPlugin plugin) { @@ -32,10 +33,10 @@ _tabComponent.add(_lblTitle, BorderLayout.CENTER); ImageIcon icon = new GraphPluginResources(plugin).getIcon(GraphPluginResources.IKeys.TO_WINDOW); - JButton btnToWindow = new JButton(icon); - btnToWindow.setBorder(BorderFactory.createEmptyBorder()); - btnToWindow.setOpaque(false); - _tabComponent.add(btnToWindow, BorderLayout.EAST); + _btnToWindow = new JButton(icon); + _btnToWindow.setBorder(BorderFactory.createEmptyBorder()); + _btnToWindow.setOpaque(false); + _tabComponent.add(_btnToWindow, BorderLayout.EAST); } @@ -53,9 +54,7 @@ @Override public Component getTabComponent() { - // return _tabComponent; - return null; - + return _tabComponent; } public String getHint() @@ -73,4 +72,9 @@ { _lblTitle.setText(title); } + + public JButton getToWindowButton() + { + return _btnToWindow; + } } Modified: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphPlugin.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphPlugin.java 2011-03-14 10:29:18 UTC (rev 6191) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphPlugin.java 2011-03-14 23:30:01 UTC (rev 6192) @@ -171,7 +171,7 @@ for (int i = 0; i < controllers.length; i++) { - controllers[i] = new GraphController(session, this, serializers[i], new DefaultGraphDisplay()); + controllers[i] = new GraphController(session, this, serializers[i]); } @@ -269,7 +269,7 @@ { v.addAll(Arrays.asList(controllers)); } - GraphController ret = new GraphController(session, this, null, new DefaultGraphDisplay()); + GraphController ret = new GraphController(session, this, null); v.add(ret); controllers = v.toArray(new GraphController[v.size()]); Deleted: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/IGraphDisplay.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/IGraphDisplay.java 2011-03-14 10:29:18 UTC (rev 6191) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/IGraphDisplay.java 2011-03-14 23:30:01 UTC (rev 6192) @@ -1,12 +0,0 @@ -package net.sourceforge.squirrel_sql.plugins.graph; - -import net.sourceforge.squirrel_sql.client.session.ISession; - -public interface IGraphDisplay -{ - void showGraph(GraphMainPanelTab graphPane, ISession session); - - void removeGraph(GraphMainPanelTab graphPane, ISession session); - - void renameGraph(GraphMainPanelTab graphPane, ISession session, String newName); -} Added: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/window/GraphWindowController.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/window/GraphWindowController.java (rev 0) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/window/GraphWindowController.java 2011-03-14 23:30:01 UTC (rev 6192) @@ -0,0 +1,214 @@ +package net.sourceforge.squirrel_sql.plugins.graph.window; + +import net.sourceforge.squirrel_sql.client.resources.SquirrelResources; +import net.sourceforge.squirrel_sql.client.session.ISession; +import net.sourceforge.squirrel_sql.client.session.event.SessionAdapter; +import net.sourceforge.squirrel_sql.client.session.event.SessionEvent; +import net.sourceforge.squirrel_sql.fw.gui.GUIUtils; +import net.sourceforge.squirrel_sql.fw.util.StringManager; +import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory; +import net.sourceforge.squirrel_sql.plugins.graph.GraphMainPanelTab; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; + +public class GraphWindowController +{ + + private static final StringManager s_stringMgr = StringManagerFactory.getStringManager(GraphWindowController.class); + + + private ISession _session; + private int _tabIdx; + private GraphWindowControllerListener _listener; + private JCheckBox _chkStayOnTop; + private JButton _btnReturn; + private JPanel _contentPanel; + + private JDialog _dlgWindow; + private JFrame _frameWindow; + private SessionAdapter _sessionAdapter; + private WindowAdapter _windowAdapter; + + + public GraphWindowController(ISession session, GraphMainPanelTab graphMainPanelTab, int tabIdx, Rectangle tabBoundsOnScreen, GraphWindowControllerListener listener) + { + _session = session; + _tabIdx = tabIdx; + _listener = listener; + + _contentPanel = new JPanel(new BorderLayout()); + _contentPanel.add(createTopPanel(), BorderLayout.NORTH); + _contentPanel.add(graphMainPanelTab.getComponent(), BorderLayout.CENTER); + + _sessionAdapter = new SessionAdapter() + { + @Override + public void sessionClosing(SessionEvent evt) + { + onSessionClosing(evt); //To change body of overridden methods use File | Settings | File Templates. + } + }; + + _session.getApplication().getSessionManager().addSessionListener(_sessionAdapter); + + + _windowAdapter = new WindowAdapter() + { + @Override + public void windowClosing(WindowEvent e) + { + onWindowClosing(); + } + }; + + showDialogWindow(tabBoundsOnScreen, graphMainPanelTab.getTitle()); + + + _chkStayOnTop.setSelected(true); + + _chkStayOnTop.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + onStayOnTopChanged(); + } + }); + + _btnReturn.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + onReturn(); + } + }); + } + + private void onSessionClosing(SessionEvent evt) + { + if (evt.getSession() == _session) + { + close(); + _session.getApplication().getSessionManager().removeSessionListener(_sessionAdapter); + } + } + + private void showDialogWindow(Rectangle bounds, String title) + { + if(null != _frameWindow) + { + title = _frameWindow.getTitle(); + bounds = _frameWindow.getBounds(); + Point locOnScreen = _frameWindow.getLocationOnScreen(); + bounds.x = locOnScreen.x; + bounds.y = locOnScreen.y; + + _frameWindow.setVisible(false); + _frameWindow.removeWindowListener(_windowAdapter); + _frameWindow.getContentPane().removeAll(); + _frameWindow.dispose(); + _frameWindow = null; + } + + _dlgWindow = new JDialog(_session.getApplication().getMainFrame()); + _dlgWindow.setTitle(title); + _dlgWindow.getContentPane().setLayout(new GridLayout(1, 1)); + _dlgWindow.getContentPane().add(_contentPanel); + _dlgWindow.setBounds(bounds); + _dlgWindow.addWindowListener(_windowAdapter); + _dlgWindow.setVisible(true); + } + + private void showFrameWindow(Rectangle bounds, String title) + { + if(null != _dlgWindow) + { + title = _dlgWindow.getTitle(); + bounds = _dlgWindow.getBounds(); + Point locOnScreen = _dlgWindow.getLocationOnScreen(); + bounds.x = locOnScreen.x; + bounds.y = locOnScreen.y; + + _dlgWindow.setVisible(false); + _dlgWindow.removeWindowListener(_windowAdapter); + _dlgWindow.getContentPane().removeAll(); + _dlgWindow.dispose(); + _dlgWindow = null; + + } + + ImageIcon appIcon = _session.getApplication().getResources().getIcon(SquirrelResources.IImageNames.APPLICATION_ICON); + + _frameWindow = new JFrame(); + _frameWindow.setTitle(title); + _frameWindow.setIconImage(appIcon.getImage()); + _frameWindow.getContentPane().setLayout(new GridLayout(1, 1)); + _frameWindow.getContentPane().add(_contentPanel); + _frameWindow.setBounds(bounds); + _frameWindow.addWindowListener(_windowAdapter); + _frameWindow.setVisible(true); + } + + private void onReturn() + { + close(); + onWindowClosing(); + } + + private void close() + { + if (null != _dlgWindow) + { + _dlgWindow.setVisible(false); + _dlgWindow.dispose(); + } + else if (null != _frameWindow) + { + _frameWindow.setVisible(false); + _frameWindow.dispose(); + } + } + + private void onStayOnTopChanged() + { + if(_chkStayOnTop.isSelected()) + { + showDialogWindow(null, null); + } + else + { + showFrameWindow(null, null); + } + } + + private JPanel createTopPanel() + { + JPanel ret = new JPanel(new GridBagLayout()); + + GridBagConstraints gbc; + + gbc = new GridBagConstraints(0,0,1,1,0,0,GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(5,5,5,5),0,0); + _chkStayOnTop = new JCheckBox(s_stringMgr.getString("graph.window.stayOnTop")); + ret.add(_chkStayOnTop, gbc); + + gbc = new GridBagConstraints(1,0,1,1,0,0,GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(5,5,5,5),0,0); + _btnReturn = new JButton(s_stringMgr.getString("graph.window.return")); + ret.add(_btnReturn, gbc); + + gbc = new GridBagConstraints(2,0,1,1,1,1,GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(5,5,5,5),0,0); + ret.add(new JPanel(), gbc); + + return ret; + } + + private void onWindowClosing() + { + _listener.closing(_tabIdx); + } +} Added: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/window/GraphWindowControllerListener.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/window/GraphWindowControllerListener.java (rev 0) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/window/GraphWindowControllerListener.java 2011-03-14 23:30:01 UTC (rev 6192) @@ -0,0 +1,6 @@ +package net.sourceforge.squirrel_sql.plugins.graph.window; + +public interface GraphWindowControllerListener +{ + void closing(int tabIdx); +} Copied: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/window/TabToWindowHandler.java (from rev 6191, trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/DefaultGraphDisplay.java) =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/window/TabToWindowHandler.java (rev 0) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/window/TabToWindowHandler.java 2011-03-14 23:30:01 UTC (rev 6192) @@ -0,0 +1,100 @@ +package net.sourceforge.squirrel_sql.plugins.graph.window; + +import net.sourceforge.squirrel_sql.client.session.ISession; +import net.sourceforge.squirrel_sql.fw.gui.GUIUtils; +import net.sourceforge.squirrel_sql.plugins.graph.GraphMainPanelTab; +import net.sourceforge.squirrel_sql.plugins.graph.GraphPanelController; +import net.sourceforge.squirrel_sql.plugins.graph.GraphPlugin; + +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +public class TabToWindowHandler +{ + private GraphMainPanelTab _graphMainPanelTab; + private ISession _session; + + public TabToWindowHandler(GraphPanelController panelController, ISession session, GraphPlugin plugin) + { + _session = session; + _graphMainPanelTab = new GraphMainPanelTab(panelController, plugin); + _graphMainPanelTab.getToWindowButton().addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + toWindow(); + } + }); + } + + private void toWindow() + { + Dimension size = _graphMainPanelTab.getComponent().getSize(); + Point screenLoc = GUIUtils.getScreenLocationFor(_graphMainPanelTab.getComponent()); + + Rectangle tabBoundsOnScreen = new Rectangle(); + tabBoundsOnScreen.x =screenLoc.x; + tabBoundsOnScreen.y =screenLoc.y; + tabBoundsOnScreen.width = size.width; + tabBoundsOnScreen.height = size.height; + + + + final int tabIdx = _session.getSessionSheet().removeMainTab(_graphMainPanelTab); + + GraphWindowControllerListener listener = new GraphWindowControllerListener() + { + @Override + public void closing(int tabIdx) + { + onWindowClosing(tabIdx); + } + }; + + GraphWindowController graphWindowController = + new GraphWindowController(_session, _graphMainPanelTab, tabIdx, tabBoundsOnScreen, listener); + + + } + + private void onWindowClosing(int tabIdx) + { + if(tabIdx <_session.getSessionSheet().getTabCount()) + { + _session.getSessionSheet().insertMainTab(_graphMainPanelTab, tabIdx); + } + else + { + _session.getSessionSheet().addMainTab(_graphMainPanelTab); + } + } + + public void showGraph() + { + _session.getSessionSheet().addMainTab(_graphMainPanelTab); + } + + public void removeGraph() + { + _session.getSessionSheet().removeMainTab(_graphMainPanelTab); + } + + public void renameGraph(String newName) + { + int index = _session.getSessionSheet().removeMainTab(_graphMainPanelTab); + _graphMainPanelTab.setTitle(newName); + _session.getSessionSheet().insertMainTab(_graphMainPanelTab, index); + } + + public String getTitle() + { + return _graphMainPanelTab.getTitle(); + } + + public void setTitle(String title) + { + _graphMainPanelTab.setTitle(title); + } +} Modified: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/xmlbeans/GraphXmlSerializer.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/xmlbeans/GraphXmlSerializer.java 2011-03-14 10:29:18 UTC (rev 6191) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/xmlbeans/GraphXmlSerializer.java 2011-03-14 23:30:01 UTC (rev 6192) @@ -28,7 +28,7 @@ /** * Either graphPane or graphFileName might be null. */ - public GraphXmlSerializer(GraphPlugin plugin, ISession session, GraphMainPanelTab graphPane, String graphFileName) + public GraphXmlSerializer(GraphPlugin plugin, ISession session, String title, String graphFileName) { try { @@ -38,7 +38,7 @@ if(null == graphFileName) { - _graphFile = getFileName(plugin.getPluginUserSettingsFolder().getPath(), url, graphPane.getTitle()); + _graphFile = getFileName(plugin.getPluginUserSettingsFolder().getPath(), url, title); } else { Copied: trunk/sql12/plugins/graph/src/main/resources/net/sourceforge/squirrel_sql/plugins/graph/window/I18NStrings.properties (from rev 6191, trunk/sql12/plugins/graph/src/main/resources/net/sourceforge/squirrel_sql/plugins/graph/I18NStrings.properties) =================================================================== --- trunk/sql12/plugins/graph/src/main/resources/net/sourceforge/squirrel_sql/plugins/graph/window/I18NStrings.properties (rev 0) +++ trunk/sql12/plugins/graph/src/main/resources/net/sourceforge/squirrel_sql/plugins/graph/window/I18NStrings.properties 2011-03-14 23:30:01 UTC (rev 6192) @@ -0,0 +1,2 @@ +graph.window.return=Return +graph.window.stayOnTop=Stay on top \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wi...@us...> - 2011-03-15 20:42:44
|
Revision: 6194 http://squirrel-sql.svn.sourceforge.net/squirrel-sql/?rev=6194&view=rev Author: wis775 Date: 2011-03-15 20:42:37 +0000 (Tue, 15 Mar 2011) Log Message: ----------- 3196153: When typing using shift, you must release shift to type space. This one was related to the RSyntaxTextArea. Within the RSyntaxTextArea, this is a feature (DumbCompleteWordAction is an action that completes the word at the caret position with the last word in the document that starts with the text up to the caret.). For Squirrel, we have disabled (removed the key stroke binding) this functionality, so that SHIFT + SPACE will insert a SPACE. Modified Paths: -------------- trunk/sql12/doc/src/main/resources/changes.txt trunk/sql12/plugins/syntax/src/main/java/net/sourceforge/squirrel_sql/plugins/syntax/rsyntax/SquirreLRSyntaxTextAreaUI.java Modified: trunk/sql12/doc/src/main/resources/changes.txt =================================================================== --- trunk/sql12/doc/src/main/resources/changes.txt 2011-03-15 03:26:23 UTC (rev 6193) +++ trunk/sql12/doc/src/main/resources/changes.txt 2011-03-15 20:42:37 UTC (rev 6194) @@ -25,6 +25,8 @@ Bug-fixes: +3196153: When typing using shift, you must release shift to type space + 3088572: Squirrel fails when user tries to edit DB fields which have particular characters. 3175871: On export to Excel, some numeric values are not exported correctly. Modified: trunk/sql12/plugins/syntax/src/main/java/net/sourceforge/squirrel_sql/plugins/syntax/rsyntax/SquirreLRSyntaxTextAreaUI.java =================================================================== --- trunk/sql12/plugins/syntax/src/main/java/net/sourceforge/squirrel_sql/plugins/syntax/rsyntax/SquirreLRSyntaxTextAreaUI.java 2011-03-15 03:26:23 UTC (rev 6193) +++ trunk/sql12/plugins/syntax/src/main/java/net/sourceforge/squirrel_sql/plugins/syntax/rsyntax/SquirreLRSyntaxTextAreaUI.java 2011-03-15 20:42:37 UTC (rev 6194) @@ -66,9 +66,18 @@ shared.remove(KeyStroke.getKeyStroke(KeyEvent.VK_J, InputEvent.CTRL_MASK)); shared.remove(KeyStroke.getKeyStroke(KeyEvent.VK_D, InputEvent.CTRL_MASK)); + /* + * Remove this Keystroke, because it triggers auto-complete of the current word with a matching most recent word, + * as long the shift and space key are pressed. + * See RTADefaultInputMap() + * put(KeyStroke.getKeyStroke(' '), RTextAreaEditorKit.rtaDumbCompleteWordAction); + */ + shared.remove(KeyStroke.getKeyStroke(' ')); + shared.put(KeyStroke.getKeyStroke(KeyEvent.VK_U, InputEvent.CTRL_MASK | InputEvent.SHIFT_MASK), RTextAreaEditorKit.rtaUpperSelectionCaseAction); shared.put(KeyStroke.getKeyStroke(KeyEvent.VK_L, InputEvent.CTRL_MASK | InputEvent.SHIFT_MASK), RTextAreaEditorKit.rtaLowerSelectionCaseAction); + KeyStroke rsyntaxRedoStroke = KeyStroke.getKeyStroke(KeyEvent.VK_Y, InputEvent.CTRL_MASK); KeyStroke squirrelRedoStroke = KeyStroke.getKeyStroke(KeyEvent.VK_R, InputEvent.CTRL_MASK); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ger...@us...> - 2011-03-15 21:08:10
|
Revision: 6195 http://squirrel-sql.svn.sourceforge.net/squirrel-sql/?rev=6195&view=rev Author: gerdwagner Date: 2011-03-15 21:08:02 +0000 (Tue, 15 Mar 2011) Log Message: ----------- More Query Builder Modified Paths: -------------- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/IObjectTreeAPI.java trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/objecttree/ObjectTreePanel.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ConfigureNonDbConstraintController.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ConfigureNonDbConstraintDlg.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/FormatController.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/FormatDlg.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphController.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphDesktopController.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphPlugin.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ModeManager.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/QueryColumnPanel.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/QueryFilterController.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/QueryFilterDlg.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/SqlScriptAcessor.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/TableFrameController.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ZoomPrintController.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/graphtofiles/GraphToFilesCtrlr.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/graphtofiles/GraphToFilesDlg.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/window/TabToWindowHandler.java trunk/sql12/plugins/graph/src/main/resources/net/sourceforge/squirrel_sql/plugins/graph/graph.properties trunk/sql12/plugins/graph/src/main/resources/net/sourceforge/squirrel_sql/plugins/graph/window/I18NStrings.properties Added Paths: ----------- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/NewQueryBuilderWindowAction.java trunk/sql12/plugins/graph/src/main/resources/net/sourceforge/squirrel_sql/plugins/graph/images/graph.png Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/IObjectTreeAPI.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/IObjectTreeAPI.java 2011-03-15 20:42:37 UTC (rev 6194) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/IObjectTreeAPI.java 2011-03-15 21:08:02 UTC (rev 6195) @@ -20,10 +20,10 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +import java.awt.*; import java.util.List; -import javax.swing.Action; -import javax.swing.JMenu; +import javax.swing.*; import javax.swing.event.TreeModelListener; import javax.swing.event.TreeSelectionListener; @@ -281,4 +281,6 @@ FindInObjectTreeController getFindController(); + + Component getDetailTabComp(); } Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/objecttree/ObjectTreePanel.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/objecttree/ObjectTreePanel.java 2011-03-15 20:42:37 UTC (rev 6194) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/objecttree/ObjectTreePanel.java 2011-03-15 21:08:02 UTC (rev 6195) @@ -980,6 +980,12 @@ return _findInObjectTreeController; } + @Override + public Component getDetailTabComp() + { + return _splitPane.getRightComponent(); + } + private final class LeftPanel extends JPanel { private static final long serialVersionUID = 1L; Modified: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ConfigureNonDbConstraintController.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ConfigureNonDbConstraintController.java 2011-03-15 20:42:37 UTC (rev 6194) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ConfigureNonDbConstraintController.java 2011-03-15 21:08:02 UTC (rev 6195) @@ -2,10 +2,12 @@ import net.sourceforge.squirrel_sql.client.session.ISession; import net.sourceforge.squirrel_sql.fw.datasetviewer.DataSetException; +import net.sourceforge.squirrel_sql.fw.gui.GUIUtils; import net.sourceforge.squirrel_sql.fw.util.StringManager; import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory; import javax.swing.*; +import java.awt.*; import java.util.Vector; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; @@ -36,7 +38,8 @@ String fkTableName = fkFrameOriginatingFrom.getTableInfo().getSimpleName(); String pkTableName = pkFramePointingTo.getTableInfo().getSimpleName(); - _dlg = new ConfigureNonDbConstraintDlg(session.getApplication().getMainFrame(), fkTableName, pkTableName); + Window parent = SwingUtilities.windowForComponent(fkFrameOriginatingFrom.getFrame()); + _dlg = new ConfigureNonDbConstraintDlg(parent, fkTableName, pkTableName); _constraintDataSet = new ConstraintDataSet(constraintView, fkTableName, pkTableName); _dlg._table.show(_constraintDataSet); Modified: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ConfigureNonDbConstraintDlg.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ConfigureNonDbConstraintDlg.java 2011-03-15 20:42:37 UTC (rev 6194) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ConfigureNonDbConstraintDlg.java 2011-03-15 21:08:02 UTC (rev 6195) @@ -28,9 +28,10 @@ JComboBox _cboLocalCol; JTextField _txtContstrName; - public ConfigureNonDbConstraintDlg(MainFrame mainFrame, String fkTableName, String pkTableName) + public ConfigureNonDbConstraintDlg(Window parent, String fkTableName, String pkTableName) { - super(mainFrame, s_stringMgr.getString("graph.ConfigureNonDbConstraintDlgConfigureNonDBConstraint"), true); + super(parent, s_stringMgr.getString("graph.ConfigureNonDbConstraintDlgConfigureNonDBConstraint")); + setModal(true); getContentPane().setLayout(new GridBagLayout()); GridBagConstraints gbc; @@ -67,7 +68,7 @@ setSize(800, 530); - GUIUtils.centerWithinScreen(this); + GUIUtils.centerWithinParent(this); getRootPane().setDefaultButton(_btnOk); Modified: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/FormatController.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/FormatController.java 2011-03-15 20:42:37 UTC (rev 6194) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/FormatController.java 2011-03-15 21:08:02 UTC (rev 6195) @@ -11,6 +11,7 @@ import javax.swing.*; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; +import java.awt.*; import java.awt.event.*; import java.io.File; import java.util.Arrays; @@ -214,108 +215,104 @@ }; } - public void setVisible(boolean b) + public void setVisible(Window parent, boolean b) { - if (null == _dlg) + _dlg = new FormatDlg(parent); + + if(null == _formats) { - _dlg = new FormatDlg(_session.getApplication().getMainFrame()); + _formats = getDefaultFormats(); + } - if(null == _formats) - { - _formats = getDefaultFormats(); - } + _dlg.lstFormats.setListData(_formats); - _dlg.lstFormats.setListData(_formats); + _dlg.cboUnit.addItem(Unit.UNIT_CM); + _dlg.cboUnit.addItem(Unit.UNIT_INCH); + m_currentUnit = Unit.UNIT_CM; + _dlg.cboUnit.setSelectedItem(Unit.UNIT_CM); - _dlg.cboUnit.addItem(Unit.UNIT_CM); - _dlg.cboUnit.addItem(Unit.UNIT_INCH); - m_currentUnit = Unit.UNIT_CM; - _dlg.cboUnit.setSelectedItem(Unit.UNIT_CM); + _dlg.lstFormats.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); - _dlg.lstFormats.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); - - _dlg.lstFormats.addListSelectionListener(new ListSelectionListener() + _dlg.lstFormats.addListSelectionListener(new ListSelectionListener() + { + public void valueChanged(ListSelectionEvent e) { - public void valueChanged(ListSelectionEvent e) - { - onListSelectionChanged(e); - } - }); + onListSelectionChanged(e); + } + }); - _dlg.lstFormats.addMouseListener(new MouseAdapter() + _dlg.lstFormats.addMouseListener(new MouseAdapter() + { + public void mousePressed(MouseEvent e) { - public void mousePressed(MouseEvent e) - { - maybeShowListPopUp(e); - } + maybeShowListPopUp(e); + } - public void mouseReleased(MouseEvent e) - { - maybeShowListPopUp(e); - } - }); + public void mouseReleased(MouseEvent e) + { + maybeShowListPopUp(e); + } + }); - m_lstPopup = new JPopupMenu(); + m_lstPopup = new JPopupMenu(); - // i18n[graph.mnuDelete=delete] - JMenuItem mnuDeleteFomat = new JMenuItem(s_stringMgr.getString("graph.mnuDelete")); - mnuDeleteFomat.addActionListener(new ActionListener() + // i18n[graph.mnuDelete=delete] + JMenuItem mnuDeleteFomat = new JMenuItem(s_stringMgr.getString("graph.mnuDelete")); + mnuDeleteFomat.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) { - public void actionPerformed(ActionEvent e) - { - onDeleteSeletedListItems(); - } - }); - m_lstPopup.add(mnuDeleteFomat); + onDeleteSeletedListItems(); + } + }); + m_lstPopup.add(mnuDeleteFomat); - // i18n[graph.landscape=landscape] - JMenuItem mnuLandscape = new JMenuItem(s_stringMgr.getString("graph.landscape")); - mnuLandscape.addActionListener(new ActionListener() + // i18n[graph.landscape=landscape] + JMenuItem mnuLandscape = new JMenuItem(s_stringMgr.getString("graph.landscape")); + mnuLandscape.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) { - public void actionPerformed(ActionEvent e) - { - onLandscape(); - } - }); - m_lstPopup.add(mnuLandscape); + onLandscape(); + } + }); + m_lstPopup.add(mnuLandscape); - _dlg.btnNew.addActionListener(new ActionListener() + _dlg.btnNew.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) { - public void actionPerformed(ActionEvent e) - { - onNew(); - } - }); + onNew(); + } + }); - _dlg.btnSave.addActionListener(new ActionListener() + _dlg.btnSave.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) { - public void actionPerformed(ActionEvent e) - { - onSave(); - } - }); + onSave(); + } + }); - _dlg.addWindowListener(new WindowAdapter() + _dlg.addWindowListener(new WindowAdapter() + { + public void windowClosing(WindowEvent e) { - public void windowClosing(WindowEvent e) - { - onWindowClosing(); - } - }); + onWindowClosing(); + } + }); - _dlg.cboUnit.addItemListener(new ItemListener() + _dlg.cboUnit.addItemListener(new ItemListener() + { + public void itemStateChanged(ItemEvent e) { - public void itemStateChanged(ItemEvent e) - { - onUnitChanged(e); - } - }); + onUnitChanged(e); + } + }); - } - GUIUtils.centerWithinParent(_dlg); _dlg.setVisible(b); Modified: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/FormatDlg.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/FormatDlg.java 2011-03-15 20:42:37 UTC (rev 6194) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/FormatDlg.java 2011-03-15 21:08:02 UTC (rev 6195) @@ -22,10 +22,11 @@ JComboBox cboUnit; - public FormatDlg(JFrame parent) + public FormatDlg(Window parent) { // i18n[graph.formats=Formats] - super(parent, s_stringMgr.getString("graph.formats"), false); + super(parent, s_stringMgr.getString("graph.formats")); + setModal(false); getContentPane().setLayout(new GridLayout(1,2,10,0)); Modified: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphController.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphController.java 2011-03-15 20:42:37 UTC (rev 6194) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphController.java 2011-03-15 21:08:02 UTC (rev 6195) @@ -165,7 +165,8 @@ tableInfos[i] = tableFrameController.getTableInfo(); } - SqlScriptAcessor.scriptTablesToSQLEntryArea(_session, tableInfos); + Window parent = SwingUtilities.windowForComponent(_panelController.getGraphPanel()); + SqlScriptAcessor.scriptTablesToSQLEntryArea(parent, _session, tableInfos); } private void refreshAllTables() @@ -436,5 +437,11 @@ { _panelController.sessionEnding(); } + + public void showQueryBuilderInWindowBesidesObjectTree() + { + _panelController.getModeManager().setMode(Mode.QUERY_BUILDER); + _tabToWindowHandler.showInWindowBesidesObjectTree(); + } } Modified: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphDesktopController.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphDesktopController.java 2011-03-15 20:42:37 UTC (rev 6194) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphDesktopController.java 2011-03-15 21:08:02 UTC (rev 6195) @@ -385,7 +385,8 @@ private void onRemoveGraph() { // i18n[graph.delGraph=Do you really wish to delete this graph?] - int res = JOptionPane.showConfirmDialog(_session.getApplication().getMainFrame(), s_stringMgr.getString("graph.delGraph")); + Window parent = SwingUtilities.windowForComponent(_desktopPane); + int res = JOptionPane.showConfirmDialog(parent, s_stringMgr.getString("graph.delGraph")); if(res == JOptionPane.YES_OPTION) { _listener.removeRequest(); @@ -396,7 +397,8 @@ { // i18n[graph.newName=Please enter a new name] - String newName = JOptionPane.showInputDialog(_session.getApplication().getMainFrame(), s_stringMgr.getString("graph.newName")); + Window parent = SwingUtilities.windowForComponent(_desktopPane); + String newName = JOptionPane.showInputDialog(parent, s_stringMgr.getString("graph.newName")); if(null != newName && 0 != newName.trim().length()) { _listener.renameRequest(newName); Modified: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphPlugin.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphPlugin.java 2011-03-15 20:42:37 UTC (rev 6194) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphPlugin.java 2011-03-15 21:08:02 UTC (rev 6195) @@ -18,8 +18,6 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -import java.util.*; - import net.sourceforge.squirrel_sql.client.IApplication; import net.sourceforge.squirrel_sql.client.action.ActionCollection; import net.sourceforge.squirrel_sql.client.plugin.*; @@ -31,6 +29,11 @@ import net.sourceforge.squirrel_sql.fw.util.log.LoggerController; import net.sourceforge.squirrel_sql.plugins.graph.xmlbeans.GraphXmlSerializer; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Hashtable; +import java.util.Vector; + /** * The SQL Script plugin class. */ @@ -146,6 +149,7 @@ ActionCollection coll = app.getActionCollection(); coll.add(new AddToGraphAction(app, _resources, this)); + coll.add(new NewQueryBuilderWindowAction(app, _resources, this)); } /** @@ -183,6 +187,10 @@ ActionCollection coll = getApplication().getActionCollection(); api.addToPopup(DatabaseObjectType.TABLE, coll.get(AddToGraphAction.class)); + session.addSeparatorToToolbar(); + session.addToToolbar(coll.get(NewQueryBuilderWindowAction.class)); + + return new PluginSessionCallbackAdaptor(this); } Modified: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ModeManager.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ModeManager.java 2011-03-15 20:42:37 UTC (rev 6194) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ModeManager.java 2011-03-15 21:08:02 UTC (rev 6195) @@ -130,4 +130,10 @@ { _listeners.remove(modeManagerListener); } + + public void setMode(Mode mode) + { + _mnuMode.setMode(mode); + onModeChanged(); + } } Added: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/NewQueryBuilderWindowAction.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/NewQueryBuilderWindowAction.java (rev 0) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/NewQueryBuilderWindowAction.java 2011-03-15 21:08:02 UTC (rev 6195) @@ -0,0 +1,34 @@ +package net.sourceforge.squirrel_sql.plugins.graph; + +import net.sourceforge.squirrel_sql.client.IApplication; +import net.sourceforge.squirrel_sql.client.action.SquirrelAction; +import net.sourceforge.squirrel_sql.client.plugin.PluginResources; +import net.sourceforge.squirrel_sql.client.session.ISession; +import net.sourceforge.squirrel_sql.client.session.action.ISessionAction; + +import java.awt.event.ActionEvent; + +public class NewQueryBuilderWindowAction extends SquirrelAction implements ISessionAction +{ + private GraphPlugin _graphPlugin; + private ISession _session; + + public NewQueryBuilderWindowAction(IApplication app, PluginResources resources, GraphPlugin graphPlugin) + { + super(app, resources); + _graphPlugin = graphPlugin; + } + + @Override + public void actionPerformed(ActionEvent e) + { + GraphController gc = _graphPlugin.createNewGraphControllerForSession(_session); + gc.showQueryBuilderInWindowBesidesObjectTree(); + } + + @Override + public void setSession(ISession session) + { + _session = session; + } +} Modified: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/QueryColumnPanel.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/QueryColumnPanel.java 2011-03-15 20:42:37 UTC (rev 6194) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/QueryColumnPanel.java 2011-03-15 21:08:02 UTC (rev 6195) @@ -176,7 +176,8 @@ } }; - new QueryFilterController(_tableName, _columnInfo, graphPlugin, _session, queryFilterListener); + Window parent = SwingUtilities.windowForComponent(txtColumn); + new QueryFilterController(parent,_tableName, _columnInfo, graphPlugin, _session, queryFilterListener); } int getMaxWidth(ColumnInfo[] allColumnInfos) Modified: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/QueryFilterController.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/QueryFilterController.java 2011-03-15 20:42:37 UTC (rev 6194) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/QueryFilterController.java 2011-03-15 21:08:02 UTC (rev 6195) @@ -28,7 +28,7 @@ private SessionAdapter _sessionAdapter; - public QueryFilterController(String tableName, ColumnInfo columnInfo, GraphPlugin graphPlugin, ISession session, QueryFilterListener queryFilterListener) + public QueryFilterController(Window parent, String tableName, ColumnInfo columnInfo, GraphPlugin graphPlugin, ISession session, QueryFilterListener queryFilterListener) { _tableName = tableName; _columnInfo = columnInfo; @@ -48,7 +48,7 @@ _session.getApplication().getSessionManager().addSessionListener(_sessionAdapter); _queryFilterListener = queryFilterListener; - _queryFilterDlg = new QueryFilterDlg(graphPlugin.getApplication().getMainFrame(), tableName + "." + _columnInfo.toString()); + _queryFilterDlg = new QueryFilterDlg(parent, tableName + "." + _columnInfo.toString()); boolean applyQuotes = Preferences.userRoot().getBoolean(PREF_KEY_QUERY_ALWAYS_APPEND_QUOTES, false); Modified: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/QueryFilterDlg.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/QueryFilterDlg.java 2011-03-15 20:42:37 UTC (rev 6194) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/QueryFilterDlg.java 2011-03-15 21:08:02 UTC (rev 6195) @@ -29,9 +29,9 @@ private static final String PREF_KEY_QUERY_FILTER_HEIGHT = "Squirrel.queryFilterDlg.height"; - public QueryFilterDlg(MainFrame mainFrame, String qualifiedColumn) + public QueryFilterDlg(Window parent, String qualifiedColumn) { - super(mainFrame, s_stringMgr.getString("QueryFilterDlg.title")); + super(parent, s_stringMgr.getString("QueryFilterDlg.title")); getContentPane().setLayout(new GridBagLayout()); Modified: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/SqlScriptAcessor.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/SqlScriptAcessor.java 2011-03-15 20:42:37 UTC (rev 6194) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/SqlScriptAcessor.java 2011-03-15 21:08:02 UTC (rev 6195) @@ -6,6 +6,7 @@ import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory; import javax.swing.*; +import java.awt.*; public class SqlScriptAcessor @@ -13,14 +14,14 @@ private static final StringManager s_stringMgr = StringManagerFactory.getStringManager(SqlScriptAcessor.class); - public static void scriptTablesToSQLEntryArea(ISession session, ITableInfo[] tableInfos) + public static void scriptTablesToSQLEntryArea(Window parent, ISession session, ITableInfo[] tableInfos) { ScriptInterface si = (ScriptInterface) session.getApplication().getPluginManager().bindExternalPluginService("sqlscript", ScriptInterface.class); if (null == si) { // i18n[graph.scriptPlugNeeded=Scripting is only available with the SQL Scripts Plugin.\nGet the plugin from www.squirrelsql.org. It's free.] String msg = s_stringMgr.getString("graph.scriptPlugNeeded"); - JOptionPane.showMessageDialog(session.getApplication().getMainFrame(), msg); + JOptionPane.showMessageDialog(parent, msg); return; } Modified: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/TableFrameController.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/TableFrameController.java 2011-03-15 20:42:37 UTC (rev 6194) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/TableFrameController.java 2011-03-15 21:08:02 UTC (rev 6195) @@ -743,8 +743,10 @@ private void onQueryClearAllFilters() { - int opt = JOptionPane.showConfirmDialog(_session.getApplication().getMainFrame(), s_stringMgr.getString("graph.tableFrameController.queryClearAllFilters")); + Window parent = SwingUtilities.windowForComponent(_frame); + int opt = JOptionPane.showConfirmDialog(parent, s_stringMgr.getString("graph.tableFrameController.queryClearAllFilters")); + if (JOptionPane.YES_OPTION != opt) { return; @@ -757,7 +759,8 @@ { if(false == b) { - int opt = JOptionPane.showConfirmDialog(_session.getApplication().getMainFrame(), s_stringMgr.getString("graph.tableFrameController.queryUnselectAll")); + Window parent = SwingUtilities.windowForComponent(_frame); + int opt = JOptionPane.showConfirmDialog(parent, s_stringMgr.getString("graph.tableFrameController.queryUnselectAll")); if(JOptionPane.YES_OPTION != opt) { @@ -793,7 +796,8 @@ private void onScriptTable() { - SqlScriptAcessor.scriptTablesToSQLEntryArea(_session, new ITableInfo[]{getTableInfo()}); + Window parent = SwingUtilities.windowForComponent(_frame); + SqlScriptAcessor.scriptTablesToSQLEntryArea(parent, _session, new ITableInfo[]{getTableInfo()}); } public ITableInfo getTableInfo() Modified: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ZoomPrintController.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ZoomPrintController.java 2011-03-15 20:42:37 UTC (rev 6194) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ZoomPrintController.java 2011-03-15 21:08:02 UTC (rev 6195) @@ -7,6 +7,7 @@ import net.sourceforge.squirrel_sql.plugins.graph.graphtofiles.GraphToFilesCtrlr; import net.sourceforge.squirrel_sql.plugins.graph.graphtofiles.SaveToFilePageFormat; +import javax.swing.*; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import java.awt.event.ActionEvent; @@ -230,8 +231,8 @@ images.add(img); } - new GraphToFilesCtrlr(images.toArray(new BufferedImage[images.size()]), - _session.getApplication().getMainFrame()); + Window parent = SwingUtilities.windowForComponent(_panel); + new GraphToFilesCtrlr(images.toArray(new BufferedImage[images.size()]), parent); } catch (PrinterException e) @@ -328,7 +329,8 @@ private void onBtnFormat() { - _formatController.setVisible(true); + Window parent = SwingUtilities.windowForComponent(_panel); + _formatController.setVisible(parent, true); } private void onHideScrollbars() Modified: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/graphtofiles/GraphToFilesCtrlr.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/graphtofiles/GraphToFilesCtrlr.java 2011-03-15 20:42:37 UTC (rev 6194) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/graphtofiles/GraphToFilesCtrlr.java 2011-03-15 21:08:02 UTC (rev 6195) @@ -1,12 +1,12 @@ package net.sourceforge.squirrel_sql.plugins.graph.graphtofiles; -import net.sourceforge.squirrel_sql.client.gui.mainframe.MainFrame; import net.sourceforge.squirrel_sql.fw.util.StringManager; import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory; import net.sourceforge.squirrel_sql.fw.util.ExtensionFilter; import javax.imageio.ImageIO; import javax.swing.*; +import java.awt.*; import java.awt.image.BufferedImage; import java.awt.event.*; import java.io.File; @@ -23,13 +23,13 @@ private static final StringManager s_stringMgr = StringManagerFactory.getStringManager(GraphToFilesCtrlr.class); private BufferedImage[] _images; - private MainFrame _mainFrame; + private Window _parent; - public GraphToFilesCtrlr(BufferedImage[] images, MainFrame mainFrame) + public GraphToFilesCtrlr(BufferedImage[] images, Window parent) { _images = images; - _mainFrame = mainFrame; - _dlg = new GraphToFilesDlg(mainFrame, images); + _parent = parent; + _dlg = new GraphToFilesDlg(parent, images); _dlg.btnClose.addActionListener(new ActionListener() { @@ -92,7 +92,7 @@ fc.setFileFilter(ef); } - if (fc.showSaveDialog(_mainFrame) == JFileChooser.APPROVE_OPTION) + if (fc.showSaveDialog(_parent) == JFileChooser.APPROVE_OPTION) { File selectedFile = fc.getSelectedFile(); if (null != selectedFile) Modified: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/graphtofiles/GraphToFilesDlg.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/graphtofiles/GraphToFilesDlg.java 2011-03-15 20:42:37 UTC (rev 6194) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/graphtofiles/GraphToFilesDlg.java 2011-03-15 21:08:02 UTC (rev 6195) @@ -21,10 +21,10 @@ StringManagerFactory.getStringManager(GraphToFilesCtrlr.class); - public GraphToFilesDlg(Frame owner, BufferedImage[] images) + public GraphToFilesDlg(Window parent, BufferedImage[] images) throws HeadlessException { - super(owner); + super(parent); // i18n[graphToClipboard.title=Copy graph image pages to clipboard] setTitle(s_stringMgr.getString("graphToFile.title")); Modified: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/window/TabToWindowHandler.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/window/TabToWindowHandler.java 2011-03-15 20:42:37 UTC (rev 6194) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/window/TabToWindowHandler.java 2011-03-15 21:08:02 UTC (rev 6195) @@ -42,7 +42,11 @@ tabBoundsOnScreen.height = size.height; + toWindowAtBounds(tabBoundsOnScreen); + } + private void toWindowAtBounds(Rectangle tabBoundsOnScreen) + { final int tabIdx = _session.getSessionSheet().removeMainTab(_graphMainPanelTab); GraphWindowControllerListener listener = new GraphWindowControllerListener() @@ -115,4 +119,16 @@ { _graphMainPanelTab.setTitle(title); } + + public void showInWindowBesidesObjectTree() + { + _session.selectMainTab(ISession.IMainPanelTabIndexes.OBJECT_TREE_TAB); + + Component detailTabComp = _session.getObjectTreeAPIOfActiveSessionWindow().getDetailTabComp(); + Point locOnScreen = GUIUtils.getScreenLocationFor(detailTabComp); + + Rectangle bounds = new Rectangle(locOnScreen.x, locOnScreen.y, detailTabComp.getWidth(), detailTabComp.getHeight()); + + toWindowAtBounds(bounds); + } } Modified: trunk/sql12/plugins/graph/src/main/resources/net/sourceforge/squirrel_sql/plugins/graph/graph.properties =================================================================== --- trunk/sql12/plugins/graph/src/main/resources/net/sourceforge/squirrel_sql/plugins/graph/graph.properties 2011-03-15 20:42:37 UTC (rev 6194) +++ trunk/sql12/plugins/graph/src/main/resources/net/sourceforge/squirrel_sql/plugins/graph/graph.properties 2011-03-15 21:08:02 UTC (rev 6195) @@ -15,6 +15,9 @@ action.net.sourceforge.squirrel_sql.plugins.graph.AddToGraphAction.name=Add to graph action.net.sourceforge.squirrel_sql.plugins.graph.AddToGraphAction.tooltip=Add to graph +action.net.sourceforge.squirrel_sql.plugins.graph.NewQueryBuilderWindowAction.name=Query Builder +action.net.sourceforge.squirrel_sql.plugins.graph.NewQueryBuilderWindowAction.tooltip=Open new Query Builder +action.net.sourceforge.squirrel_sql.plugins.graph.NewQueryBuilderWindowAction.image=graph.png ######## # Menus. @@ -29,4 +32,5 @@ menuitem.net.sourceforge.squirrel_sql.plugins.graph.AddToGraphAction.accelerator= menuitem.net.sourceforge.squirrel_sql.plugins.graph.AddToGraphAction.mnemonic= - +menuitem.net.sourceforge.squirrel_sql.plugins.graph.NewQueryBuilderWindowAction.accelerator= +menuitem.net.sourceforge.squirrel_sql.plugins.graph.NewQueryBuilderWindowAction.mnemonic= Added: trunk/sql12/plugins/graph/src/main/resources/net/sourceforge/squirrel_sql/plugins/graph/images/graph.png =================================================================== (Binary files differ) Property changes on: trunk/sql12/plugins/graph/src/main/resources/net/sourceforge/squirrel_sql/plugins/graph/images/graph.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: trunk/sql12/plugins/graph/src/main/resources/net/sourceforge/squirrel_sql/plugins/graph/window/I18NStrings.properties =================================================================== --- trunk/sql12/plugins/graph/src/main/resources/net/sourceforge/squirrel_sql/plugins/graph/window/I18NStrings.properties 2011-03-15 20:42:37 UTC (rev 6194) +++ trunk/sql12/plugins/graph/src/main/resources/net/sourceforge/squirrel_sql/plugins/graph/window/I18NStrings.properties 2011-03-15 21:08:02 UTC (rev 6195) @@ -1,2 +1,2 @@ -graph.window.return=Return +graph.window.return=Return to tab graph.window.stayOnTop=Stay on top \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ger...@us...> - 2011-03-17 20:19:22
|
Revision: 6196 http://squirrel-sql.svn.sourceforge.net/squirrel-sql/?rev=6196&view=rev Author: gerdwagner Date: 2011-03-17 20:19:15 +0000 (Thu, 17 Mar 2011) Log Message: ----------- Hibernate Plugin: Improved display of mapped objects in table cells: Class name, primary key and toString() ist displayed instead of toString() only. Modified Paths: -------------- trunk/sql12/doc/src/main/resources/changes.txt trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/viewobjects/ResultDataSet.java trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/viewobjects/SingleType.java Modified: trunk/sql12/doc/src/main/resources/changes.txt =================================================================== --- trunk/sql12/doc/src/main/resources/changes.txt 2011-03-15 21:08:02 UTC (rev 6195) +++ trunk/sql12/doc/src/main/resources/changes.txt 2011-03-17 20:19:15 UTC (rev 6196) @@ -7,6 +7,10 @@ Enhancements: +Hibernate Plugin: Improved display of mapped objects in table cells: + Class name, primary key and toString() ist displayed instead of toString() only. + + DB-Diff-Plugin: Allowed to compare tables within one Session the same way as with different Sessions using select and compare of the Object tree's right mouse menu. It is still possible to compare tables inside the Modified: trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/viewobjects/ResultDataSet.java =================================================================== --- trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/viewobjects/ResultDataSet.java 2011-03-15 21:08:02 UTC (rev 6195) +++ trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/viewobjects/ResultDataSet.java 2011-03-17 20:19:15 UTC (rev 6196) @@ -5,6 +5,7 @@ import net.sourceforge.squirrel_sql.fw.datasetviewer.DataSetException; import net.sourceforge.squirrel_sql.fw.datasetviewer.IDataSet; import net.sourceforge.squirrel_sql.fw.util.IMessageHandler; +import net.sourceforge.squirrel_sql.plugins.hibernate.mapping.MappedClassInfo; import net.sourceforge.squirrel_sql.plugins.hibernate.server.ReflectionCaller; import net.sourceforge.squirrel_sql.plugins.hibernate.mapping.PropertyInfo; @@ -75,6 +76,12 @@ } } + MappedClassInfo mappedClassInfo = ViewObjectsUtil.findMappedClassInfo(hpr.getTypeName(), _singleType.getAllMappedClassInfos(), true); + if (null != mappedClassInfo) + { + return new SingleResult(hpr.getValue(), mappedClassInfo); + } + return hpr.getValue(); } Modified: trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/viewobjects/SingleType.java =================================================================== --- trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/viewobjects/SingleType.java 2011-03-15 21:08:02 UTC (rev 6195) +++ trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/viewobjects/SingleType.java 2011-03-17 20:19:15 UTC (rev 6196) @@ -164,4 +164,9 @@ { return _persistenCollectionClass; } + + public ArrayList<MappedClassInfo> getAllMappedClassInfos() + { + return _allMappedClassInfos; + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wi...@us...> - 2011-03-18 21:42:00
|
Revision: 6198 http://squirrel-sql.svn.sourceforge.net/squirrel-sql/?rev=6198&view=rev Author: wis775 Date: 2011-03-18 21:41:54 +0000 (Fri, 18 Mar 2011) Log Message: ----------- 3222350: Cannot enter negative values for numeric fields when editing the result table. A sign was only allowed, if no value was present. Now, a sign is allowed, if the caret is at position 0 and the char after the caret is a numeric one. (Avoiding 2 or more signs) Modified Paths: -------------- trunk/sql12/doc/src/main/resources/changes.txt trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeBigDecimal.java Modified: trunk/sql12/doc/src/main/resources/changes.txt =================================================================== --- trunk/sql12/doc/src/main/resources/changes.txt 2011-03-17 22:07:19 UTC (rev 6197) +++ trunk/sql12/doc/src/main/resources/changes.txt 2011-03-18 21:41:54 UTC (rev 6198) @@ -29,6 +29,8 @@ Bug-fixes: +3222350: Cannot enter negative values for numeric fields when editing the result table. + 3196153: When typing using shift, you must release shift to type space 3088572: Squirrel fails when user tries to edit DB fields which have particular characters. Modified: trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeBigDecimal.java =================================================================== --- trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeBigDecimal.java 2011-03-17 22:07:19 UTC (rev 6197) +++ trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeBigDecimal.java 2011-03-18 21:41:54 UTC (rev 6198) @@ -36,6 +36,8 @@ import javax.swing.SwingUtilities; import javax.swing.text.JTextComponent; +import org.apache.commons.lang.StringUtils; + import net.sourceforge.squirrel_sql.fw.datasetviewer.CellDataPopup; import net.sourceforge.squirrel_sql.fw.datasetviewer.ColumnDisplayDefinition; import net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.whereClause.IWhereClausePart; @@ -410,12 +412,22 @@ e.consume(); } } - + + + if ( (c == '-' || c=='+') && - ! (text.equals("<null>") || text.length() == 0)) { - // user entered '+' or '-' at a bad place - _beepHelper.beep(_theComponent); - e.consume(); + ! (text.equals("<null>") || text.length() == 0) + ) { + int caretPosition = _theComponent.getCaretPosition(); + if(caretPosition != 0 || !StringUtils.isNumeric(text.substring(0, 1)) + ){ + /* + * user entered '+' or '-' at a bad place, + * Maybe not at the first position, or there is not a numeric char at the beginning - maybe we have already a sign + */ + _beepHelper.beep(_theComponent); + e.consume(); + } } if ( ! ( Character.isDigit(c) || This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wi...@us...> - 2011-03-19 13:17:48
|
Revision: 6200 http://squirrel-sql.svn.sourceforge.net/squirrel-sql/?rev=6200&view=rev Author: wis775 Date: 2011-03-19 13:17:42 +0000 (Sat, 19 Mar 2011) Log Message: ----------- Now, "Press to open logs" shows the current log file by default instead of a random one. The combobox holds object from type LogFile, so if we want so select the default, we must use LogFile instead of String. Modified Paths: -------------- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/gui/ViewLogsSheet.java trunk/sql12/doc/src/main/resources/changes.txt Added Paths: ----------- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/gui/LogFile.java Added: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/gui/LogFile.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/gui/LogFile.java (rev 0) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/gui/LogFile.java 2011-03-19 13:17:42 UTC (rev 6200) @@ -0,0 +1,58 @@ +/* + * Copyright (C) 2011 Stefan Willinger + * wi...@us... + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package net.sourceforge.squirrel_sql.client.gui; + +import java.io.File; + +import net.sourceforge.squirrel_sql.fw.util.Utilities; + +/** + * Represents a Squirrel-SQL log file. + * + * This class was originally a inner class of {@link ViewLogsSheet}. + * @author Stefan Willinger + * + */ +public class LogFile extends File +{ + private static final long serialVersionUID = 1L; + + private final String _stringRep; + + LogFile(File dir, String name) + { + super(dir, name); + final StringBuffer buf = new StringBuffer(); + buf.append(getName()).append(" (").append(Utilities.formatSize(length())).append(")"); + _stringRep = buf.toString(); + } + + /** + * @param appLogFile + */ + public LogFile(File appLogFile) { + this(appLogFile.getParentFile(), appLogFile.getName()); + } + + @Override + public String toString() + { + return _stringRep; + } +} \ No newline at end of file Property changes on: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/gui/LogFile.java ___________________________________________________________________ Added: svn:mime-type + text/plain Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/gui/ViewLogsSheet.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/gui/ViewLogsSheet.java 2011-03-19 13:15:03 UTC (rev 6199) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/gui/ViewLogsSheet.java 2011-03-19 13:17:42 UTC (rev 6200) @@ -54,7 +54,6 @@ import net.sourceforge.squirrel_sql.fw.gui.ToolBar; import net.sourceforge.squirrel_sql.fw.util.StringManager; import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory; -import net.sourceforge.squirrel_sql.fw.util.Utilities; import net.sourceforge.squirrel_sql.fw.util.log.ILogger; import net.sourceforge.squirrel_sql.fw.util.log.LoggerController; @@ -460,7 +459,8 @@ if (_logDirCmb.getModel().getSize() > 0) { - _logDirCmb.setSelectedItem(appLogFile.getName()); + LogFile logFile = new LogFile(appLogFile); + _logDirCmb.setSelectedItem(logFile); } // Done after the set of the selected item above so that we control @@ -572,25 +572,4 @@ super.addItem(new LogFile(_dir, anObject.toString())); } } - - private static final class LogFile extends File - { - private static final long serialVersionUID = 1L; - - private final String _stringRep; - - LogFile(File dir, String name) - { - super(dir, name); - final StringBuffer buf = new StringBuffer(); - buf.append(getName()).append(" (").append(Utilities.formatSize(length())).append(")"); - _stringRep = buf.toString(); - } - - @Override - public String toString() - { - return _stringRep; - } - } } Modified: trunk/sql12/doc/src/main/resources/changes.txt =================================================================== --- trunk/sql12/doc/src/main/resources/changes.txt 2011-03-19 13:15:03 UTC (rev 6199) +++ trunk/sql12/doc/src/main/resources/changes.txt 2011-03-19 13:17:42 UTC (rev 6200) @@ -29,6 +29,8 @@ Bug-fixes: +Now, "Press to open logs" shows the current log file by default instead of a random one. + 3222350: Cannot enter negative values for numeric fields when editing the result table. 3196153: When typing using shift, you must release shift to type space This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <man...@us...> - 2011-03-19 13:40:14
|
Revision: 6201 http://squirrel-sql.svn.sourceforge.net/squirrel-sql/?rev=6201&view=rev Author: manningr Date: 2011-03-19 13:40:08 +0000 (Sat, 19 Mar 2011) Log Message: ----------- New profile (only available in app module at present) allows tests that end with *UITest.java to be run in addition to the normal tests by using a new profile called 'uitests' (for example, 'mvn clean install -P uitests', will run all of the normal tests, afterwards, all UI tests will be run) Modified Paths: -------------- trunk/sql12/app/pom.xml Added Paths: ----------- trunk/sql12/app/src/test/java/net/sourceforge/squirrel_sql/client/preferences/GeneralPreferencesPanelUITest.java trunk/sql12/app/src/test/resources/net/ trunk/sql12/app/src/test/resources/net/sourceforge/ trunk/sql12/app/src/test/resources/net/sourceforge/squirrel_sql/ trunk/sql12/app/src/test/resources/net/sourceforge/squirrel_sql/client/ trunk/sql12/app/src/test/resources/net/sourceforge/squirrel_sql/client/Version.properties Removed Paths: ------------- trunk/sql12/test/jfctests/net/sourceforge/squirrel_sql/client/preferences/GeneralPreferencesPanelUITest.java Modified: trunk/sql12/app/pom.xml =================================================================== --- trunk/sql12/app/pom.xml 2011-03-19 13:17:42 UTC (rev 6200) +++ trunk/sql12/app/pom.xml 2011-03-19 13:40:08 UTC (rev 6201) @@ -1,4 +1,5 @@ -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>net.sf.squirrel-sql</groupId> @@ -95,11 +96,17 @@ <groupId>org.mockito</groupId> <artifactId>mockito-all</artifactId> </dependency> + <dependency> + <groupId>org.easytesting</groupId> + <artifactId>fest-swing-junit-4.5</artifactId> + <version>1.2.1</version> + <scope>test</scope> + </dependency> </dependencies> <build> <!-- - Filter in the version from the version-plugin below, into Version.properties. Turn off filtering - for all other files here + Filter in the version from the version-plugin below, into + Version.properties. Turn off filtering for all other files here --> <resources> <resource> @@ -154,14 +161,24 @@ <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>${surefire-plugin-version}</version> - <configuration> - <redirectTestOutputToFile>true</redirectTestOutputToFile> - <excludes> - <exclude>**/ApplicationArgumentsTest.java</exclude> - </excludes> - <parallel>${surefire-parallel-type}</parallel> - <threadCount>${surefire-thread-count}</threadCount> - </configuration> + <executions> + <execution> + <id>default-test</id> + <phase>test</phase> + <goals> + <goal>test</goal> + </goals> + <configuration> + <redirectTestOutputToFile>true</redirectTestOutputToFile> + <excludes> + <exclude>**/ApplicationArgumentsTest.java</exclude> + <exclude>**/*UITest.java</exclude> + </excludes> + <parallel>${surefire-parallel-type}</parallel> + <threadCount>${surefire-thread-count}</threadCount> + </configuration> + </execution> + </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> @@ -206,4 +223,40 @@ </plugin> </plugins> </build> + <profiles> + <profile> + <id>uitests</id> + <activation> + <property> + <name>uitests</name> + </property> + </activation> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + <version>${surefire-plugin-version}</version> + <executions> + <execution> + <id>uitests</id> + <phase>test</phase> + <goals> + <goal>test</goal> + </goals> + <configuration> + <redirectTestOutputToFile>true</redirectTestOutputToFile> + <includes> + <include>**/*UITest.java</include> + </includes> + <parallel>${surefire-parallel-type}</parallel> + <threadCount>${surefire-thread-count}</threadCount> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> </project> Copied: trunk/sql12/app/src/test/java/net/sourceforge/squirrel_sql/client/preferences/GeneralPreferencesPanelUITest.java (from rev 5908, trunk/sql12/test/jfctests/net/sourceforge/squirrel_sql/client/preferences/GeneralPreferencesPanelUITest.java) =================================================================== --- trunk/sql12/app/src/test/java/net/sourceforge/squirrel_sql/client/preferences/GeneralPreferencesPanelUITest.java (rev 0) +++ trunk/sql12/app/src/test/java/net/sourceforge/squirrel_sql/client/preferences/GeneralPreferencesPanelUITest.java 2011-03-19 13:40:08 UTC (rev 6201) @@ -0,0 +1,90 @@ +package net.sourceforge.squirrel_sql.client.preferences; + +import static org.easymock.EasyMock.expect; + +import javax.swing.JFrame; + +import net.sourceforge.squirrel_sql.BaseSQuirreLJUnit4TestCase; +import net.sourceforge.squirrel_sql.client.IApplication; + +import org.fest.swing.annotation.GUITest; +import org.fest.swing.fixture.FrameFixture; +import org.fest.swing.fixture.JCheckBoxFixture; +import org.fest.swing.fixture.JRadioButtonFixture; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +/** + * This is a FEST UI test for GeneralPreferencesPanel + */ +@GUITest +public class GeneralPreferencesPanelUITest extends BaseSQuirreLJUnit4TestCase { + + JFrame frame = null; + FrameFixture fixture = null; + + @Before + public void setUp() throws Exception + { + if (frame == null) { + frame = constructTestFrame(); + } + fixture = new FrameFixture(frame); + fixture.show(); + + } + + @After + public void tearDown() + { + if (fixture != null) { + fixture.cleanUp(); + } + } + + @Test + public void testSomething() { + JRadioButtonFixture tabbedStyleRadioButton = fixture.radioButton("tabbedStyleRadioButton"); + JRadioButtonFixture internalFrameStyleRadioButton = fixture.radioButton("internalFrameStyleRadioButton"); + JCheckBoxFixture showContentsCheckBox = fixture.checkBox("showContentsCheckBox"); + JCheckBoxFixture maximizeSessionSheetCheckBox = fixture.checkBox("maximizeSessionSheetCheckBox"); + JCheckBoxFixture showTabbedStyleHintCheckBox = fixture.checkBox("showTabbedStyleHintCheckBox"); + + tabbedStyleRadioButton.click(); + + showContentsCheckBox.requireDisabled(); + maximizeSessionSheetCheckBox.requireDisabled(); + showTabbedStyleHintCheckBox.requireDisabled(); + + internalFrameStyleRadioButton.click(); + + showContentsCheckBox.requireEnabled(); + maximizeSessionSheetCheckBox.requireEnabled(); + showTabbedStyleHintCheckBox.requireEnabled(); + } + + /** + * The main method is not used at all in the test - it is just here to allow for user interaction testing + * with the graphical component, which doesn't require launching SQuirreL. + * + * @param args + */ + public static void main(String[] args) { + new GeneralPreferencesPanelUITest().constructTestFrame().setVisible(true); + } + + private JFrame constructTestFrame() { + IApplication mockApplication = mockHelper.createMock("mockApplication", IApplication.class); + SquirrelPreferences prefs = new SquirrelPreferences(); + expect(mockApplication.getSquirrelPreferences()).andStubReturn(prefs); + mockHelper.replayAll(); + final JFrame frame = new JFrame("Test UpdatePreferencesPanel"); + GeneralPreferencesPanel panel = new GeneralPreferencesPanel(); + panel.initialize(mockApplication); + frame.getContentPane().add(panel.getPanelComponent()); + frame.setSize(700,600); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + return frame; + } +} Added: trunk/sql12/app/src/test/resources/net/sourceforge/squirrel_sql/client/Version.properties =================================================================== --- trunk/sql12/app/src/test/resources/net/sourceforge/squirrel_sql/client/Version.properties (rev 0) +++ trunk/sql12/app/src/test/resources/net/sourceforge/squirrel_sql/client/Version.properties 2011-03-19 13:40:08 UTC (rev 6201) @@ -0,0 +1 @@ +squirrelsql.version=${squirrelsql.version} \ No newline at end of file Deleted: trunk/sql12/test/jfctests/net/sourceforge/squirrel_sql/client/preferences/GeneralPreferencesPanelUITest.java =================================================================== --- trunk/sql12/test/jfctests/net/sourceforge/squirrel_sql/client/preferences/GeneralPreferencesPanelUITest.java 2011-03-19 13:17:42 UTC (rev 6200) +++ trunk/sql12/test/jfctests/net/sourceforge/squirrel_sql/client/preferences/GeneralPreferencesPanelUITest.java 2011-03-19 13:40:08 UTC (rev 6201) @@ -1,90 +0,0 @@ -package net.sourceforge.squirrel_sql.client.preferences; - -import static org.easymock.EasyMock.expect; - -import javax.swing.JFrame; - -import net.sourceforge.squirrel_sql.BaseSQuirreLJUnit4TestCase; -import net.sourceforge.squirrel_sql.client.IApplication; - -import org.fest.swing.annotation.GUITest; -import org.fest.swing.fixture.FrameFixture; -import org.fest.swing.fixture.JCheckBoxFixture; -import org.fest.swing.fixture.JRadioButtonFixture; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -/** - * This is a FEST UI test for GeneralPreferencesPanel - */ -@GUITest -public class GeneralPreferencesPanelUITest extends BaseSQuirreLJUnit4TestCase { - - JFrame frame = null; - FrameFixture fixture = null; - - @Before - public void setUp() throws Exception - { - if (frame == null) { - frame = constructTestFrame(); - } - fixture = new FrameFixture(frame); - fixture.show(); - - } - - @After - public void tearDown() - { - if (fixture != null) { - fixture.cleanUp(); - } - } - - @Test - public void testSomething() { - JRadioButtonFixture tabbedStyleRadioButton = fixture.radioButton("tabbedStyleRadioButton"); - JRadioButtonFixture internalFrameStyleRadioButton = fixture.radioButton("internalFrameStyleRadioButton"); - JCheckBoxFixture showContentsCheckBox = fixture.checkBox("showContentsCheckBox"); - JCheckBoxFixture maximizeSessionSheetCheckBox = fixture.checkBox("maximizeSessionSheetCheckBox"); - JCheckBoxFixture showTabbedStyleHintCheckBox = fixture.checkBox("showTabbedStyleHintCheckBox"); - - tabbedStyleRadioButton.click(); - - showContentsCheckBox.requireDisabled(); - maximizeSessionSheetCheckBox.requireDisabled(); - showTabbedStyleHintCheckBox.requireDisabled(); - - internalFrameStyleRadioButton.click(); - - showContentsCheckBox.requireEnabled(); - maximizeSessionSheetCheckBox.requireEnabled(); - showTabbedStyleHintCheckBox.requireEnabled(); - } - - /** - * The main method is not used at all in the test - it is just here to allow for user interaction testing - * with the graphical component, which doesn't require launching SQuirreL. - * - * @param args - */ - public static void main(String[] args) { - new GeneralPreferencesPanelUITest().constructTestFrame().setVisible(true); - } - - private JFrame constructTestFrame() { - IApplication mockApplication = mockHelper.createMock("mockApplication", IApplication.class); - SquirrelPreferences prefs = new SquirrelPreferences(); - expect(mockApplication.getSquirrelPreferences()).andStubReturn(prefs); - mockHelper.replayAll(); - final JFrame frame = new JFrame("Test UpdatePreferencesPanel"); - GeneralPreferencesPanel panel = new GeneralPreferencesPanel(); - panel.initialize(mockApplication); - frame.getContentPane().add(panel.getPanelComponent()); - frame.setSize(700,600); - frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - return frame; - } -} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <man...@us...> - 2011-03-19 17:35:24
|
Revision: 6202 http://squirrel-sql.svn.sourceforge.net/squirrel-sql/?rev=6202&view=rev Author: manningr Date: 2011-03-19 17:35:17 +0000 (Sat, 19 Mar 2011) Log Message: ----------- Relocated uitests profile to root so that it can be used by the plugin projects as well. Moved the surefire-plugin configuration out of the plugin parent pom so that the common configuration in the root can be inherited. Relocated the derby plugin preferences UI test to the derby project. Modified Paths: -------------- trunk/sql12/app/pom.xml trunk/sql12/plugins/derby/pom.xml trunk/sql12/plugins/squirrelsql-plugins-parent-pom/pom.xml trunk/sql12/pom.xml Added Paths: ----------- trunk/sql12/app/src/test/java/net/sourceforge/squirrel_sql/client/plugin/gui/ trunk/sql12/app/src/test/java/net/sourceforge/squirrel_sql/client/plugin/gui/AbstractPluginPreferencesUITest.java trunk/sql12/plugins/derby/src/test/java/net/sourceforge/squirrel_sql/plugins/derby/prefs/DerbyPluginPreferencesPanelUITest.java Removed Paths: ------------- trunk/sql12/test/jfctests/net/sourceforge/squirrel_sql/client/plugin/gui/AbstractPluginPreferencesUITest.java trunk/sql12/test/jfctests/net/sourceforge/squirrel_sql/plugins/derby/prefs/DerbyPluginPreferencesPanelUITest.java Modified: trunk/sql12/app/pom.xml =================================================================== --- trunk/sql12/app/pom.xml 2011-03-19 13:40:08 UTC (rev 6201) +++ trunk/sql12/app/pom.xml 2011-03-19 17:35:17 UTC (rev 6202) @@ -99,7 +99,7 @@ <dependency> <groupId>org.easytesting</groupId> <artifactId>fest-swing-junit-4.5</artifactId> - <version>1.2.1</version> + <version>${fest-version}</version> <scope>test</scope> </dependency> </dependencies> @@ -223,40 +223,43 @@ </plugin> </plugins> </build> - <profiles> - <profile> - <id>uitests</id> - <activation> - <property> - <name>uitests</name> - </property> - </activation> - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-surefire-plugin</artifactId> - <version>${surefire-plugin-version}</version> - <executions> - <execution> - <id>uitests</id> - <phase>test</phase> - <goals> - <goal>test</goal> - </goals> - <configuration> - <redirectTestOutputToFile>true</redirectTestOutputToFile> - <includes> - <include>**/*UITest.java</include> - </includes> - <parallel>${surefire-parallel-type}</parallel> - <threadCount>${surefire-thread-count}</threadCount> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> - </profile> - </profiles> +<!-- <profiles>--> +<!-- <profile>--> +<!-- <id>uitests</id>--> +<!-- <activation>--> +<!-- <property>--> +<!-- <name>uitests</name>--> +<!-- </property>--> +<!-- </activation>--> +<!-- <build>--> +<!-- <plugins>--> +<!-- <plugin>--> +<!-- <groupId>org.apache.maven.plugins</groupId>--> +<!-- <artifactId>maven-surefire-plugin</artifactId>--> +<!-- <version>${surefire-plugin-version}</version>--> +<!-- <executions>--> +<!-- <execution>--> +<!-- <id>uitests</id>--> +<!-- <phase>test</phase>--> +<!-- <goals>--> +<!-- <goal>test</goal>--> +<!-- </goals>--> +<!-- <configuration>--> +<!-- <redirectTestOutputToFile>true</redirectTestOutputToFile>--> +<!-- <includes>--> +<!-- <include>**/*UITest.java</include>--> +<!-- </includes>--> +<!-- <excludes>--> +<!-- <exclude>**/Abstract*UITest.java</exclude>--> +<!-- </excludes>--> +<!-- <parallel>${surefire-parallel-type}</parallel>--> +<!-- <threadCount>${surefire-thread-count}</threadCount>--> +<!-- </configuration>--> +<!-- </execution>--> +<!-- </executions>--> +<!-- </plugin>--> +<!-- </plugins>--> +<!-- </build>--> +<!-- </profile>--> +<!-- </profiles>--> </project> Copied: trunk/sql12/app/src/test/java/net/sourceforge/squirrel_sql/client/plugin/gui/AbstractPluginPreferencesUITest.java (from rev 6191, trunk/sql12/test/jfctests/net/sourceforge/squirrel_sql/client/plugin/gui/AbstractPluginPreferencesUITest.java) =================================================================== --- trunk/sql12/app/src/test/java/net/sourceforge/squirrel_sql/client/plugin/gui/AbstractPluginPreferencesUITest.java (rev 0) +++ trunk/sql12/app/src/test/java/net/sourceforge/squirrel_sql/client/plugin/gui/AbstractPluginPreferencesUITest.java 2011-03-19 17:35:17 UTC (rev 6202) @@ -0,0 +1,143 @@ +/* + * Copyright (C) 2009 Rob Manning + * man...@us... + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package net.sourceforge.squirrel_sql.client.plugin.gui; + +import java.awt.BorderLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.io.File; + +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.JScrollPane; + +import net.sourceforge.squirrel_sql.BaseSQuirreLJUnit4TestCase; +import net.sourceforge.squirrel_sql.client.plugin.IPlugin; +import net.sourceforge.squirrel_sql.client.plugin.PluginException; +import net.sourceforge.squirrel_sql.client.plugin.PluginQueryTokenizerPreferencesManager; +import net.sourceforge.squirrel_sql.fw.preferences.IQueryTokenizerPreferenceBean; + +import org.fest.swing.annotation.GUITest; +import org.fest.swing.fixture.FrameFixture; +import org.fest.swing.fixture.JCheckBoxFixture; +import org.fest.swing.fixture.JTextComponentFixture; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mockito; + +/** + * Test base class for UI tests on database-specific plugin preferences panels. + */ +@GUITest +public abstract class AbstractPluginPreferencesUITest extends BaseSQuirreLJUnit4TestCase +{ + + protected JFrame frame = null; + protected FrameFixture fixture = null; + protected PluginQueryTokenizerPreferencesPanel classUnderTest = null; + protected PluginQueryTokenizerPreferencesManager prefsManager = + new PluginQueryTokenizerPreferencesManager(); + protected JCheckBoxFixture useCustomQTCheckBox = null; + + protected IPlugin mockPlugin = Mockito.mock(IPlugin.class); + + @Before + public void setUp() throws Exception + { + if (frame == null) { + frame = constructTestFrame(); + } + fixture = new FrameFixture(frame); + fixture.show(); + useCustomQTCheckBox = fixture.checkBox("useCustomQTCheckBox"); + } + + @After + public void tearDown() + { + if (fixture != null) { + fixture.cleanUp(); + } + } + + @Test + public void testCustomQTCheckbox() { + JTextComponentFixture lineCommentTextField = fixture.textBox("lineCommentTextField"); + JTextComponentFixture statementSeparatorTextField = fixture.textBox("statementSeparatorTextField"); + + useCustomQTCheckBox.uncheck(); + useCustomQTCheckBox.check(); + useCustomQTCheckBox.uncheck(); + + lineCommentTextField.requireDisabled(); + statementSeparatorTextField.requireDisabled(); + + useCustomQTCheckBox.check(); + lineCommentTextField.requireEnabled(); + statementSeparatorTextField.requireEnabled(); + } + + /** + * Builds the frame that will be used to display the panel. + * + * @return + * @throws Exception + */ + protected JFrame constructTestFrame() throws Exception + { + JFrame f = new JFrame(); + f.getContentPane().setLayout(new BorderLayout()); + File prefsFile = new File("prefs.xml"); + prefsFile.delete(); + prefsManager.initialize(mockPlugin, getPreferenceBean()); + classUnderTest = getPrefsPanelToTest(); + JScrollPane sp = new JScrollPane(classUnderTest); + f.getContentPane().add(sp, BorderLayout.CENTER); + JButton button = new JButton("Save"); + button.setName("saveButton"); + button.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + classUnderTest.applyChanges(); + prefsManager.unload(); + } + }); + JButton exitButton = new JButton("Exit"); + exitButton.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + System.exit(0); + } + }); + JPanel buttonPanel = new JPanel(); + buttonPanel.add(button); + buttonPanel.add(exitButton); + f.getContentPane().add(buttonPanel, BorderLayout.SOUTH); + f.setBounds(200, 50, 700, 700); + return f; + } + + protected abstract PluginQueryTokenizerPreferencesPanel getPrefsPanelToTest() throws PluginException; + + protected abstract IQueryTokenizerPreferenceBean getPreferenceBean(); +} \ No newline at end of file Modified: trunk/sql12/plugins/derby/pom.xml =================================================================== --- trunk/sql12/plugins/derby/pom.xml 2011-03-19 13:40:08 UTC (rev 6201) +++ trunk/sql12/plugins/derby/pom.xml 2011-03-19 17:35:17 UTC (rev 6202) @@ -1,4 +1,5 @@ -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>net.sf.squirrel-sql.plugins</groupId> @@ -83,6 +84,10 @@ <groupId>org.mockito</groupId> <artifactId>mockito-all</artifactId> </dependency> + <dependency> + <groupId>org.easytesting</groupId> + <artifactId>fest-swing-junit-4.5</artifactId> + </dependency> </dependencies> <properties> <pluginClassName>net.sourceforge.squirrel_sql.plugins.derby.DerbyPlugin</pluginClassName> @@ -92,7 +97,7 @@ <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> - </plugin> + </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> Copied: trunk/sql12/plugins/derby/src/test/java/net/sourceforge/squirrel_sql/plugins/derby/prefs/DerbyPluginPreferencesPanelUITest.java (from rev 6191, trunk/sql12/test/jfctests/net/sourceforge/squirrel_sql/plugins/derby/prefs/DerbyPluginPreferencesPanelUITest.java) =================================================================== --- trunk/sql12/plugins/derby/src/test/java/net/sourceforge/squirrel_sql/plugins/derby/prefs/DerbyPluginPreferencesPanelUITest.java (rev 0) +++ trunk/sql12/plugins/derby/src/test/java/net/sourceforge/squirrel_sql/plugins/derby/prefs/DerbyPluginPreferencesPanelUITest.java 2011-03-19 17:35:17 UTC (rev 6202) @@ -0,0 +1,57 @@ +/* + * Copyright (C) 2009 Rob Manning + * man...@us... + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package net.sourceforge.squirrel_sql.plugins.derby.prefs; + + +import net.sourceforge.squirrel_sql.client.plugin.PluginException; +import net.sourceforge.squirrel_sql.client.plugin.gui.AbstractPluginPreferencesUITest; +import net.sourceforge.squirrel_sql.client.plugin.gui.PluginQueryTokenizerPreferencesPanel; +import net.sourceforge.squirrel_sql.fw.preferences.BaseQueryTokenizerPreferenceBean; + +import org.fest.swing.annotation.GUITest; + +@GUITest +public class DerbyPluginPreferencesPanelUITest extends AbstractPluginPreferencesUITest +{ + + /** + * The main method is not used at all in the test - it is just here to allow for user interaction testing + * with the graphical component, which doesn't require launching SQuirreL. + * + * @param args + */ + public static void main(String[] args) throws Exception + { + new DerbyPluginPreferencesPanelUITest().constructTestFrame().setVisible(true); + } + + @Override + protected PluginQueryTokenizerPreferencesPanel getPrefsPanelToTest() throws PluginException + { + return new DerbyPluginPreferencesPanel(prefsManager); + } + + @Override + protected BaseQueryTokenizerPreferenceBean getPreferenceBean() + { + return new DerbyPreferenceBean(); + } + + +} Modified: trunk/sql12/plugins/squirrelsql-plugins-parent-pom/pom.xml =================================================================== --- trunk/sql12/plugins/squirrelsql-plugins-parent-pom/pom.xml 2011-03-19 13:40:08 UTC (rev 6201) +++ trunk/sql12/plugins/squirrelsql-plugins-parent-pom/pom.xml 2011-03-19 17:35:17 UTC (rev 6202) @@ -115,6 +115,12 @@ <version>${mockito-version}</version> <scope>test</scope> </dependency> + <dependency> + <groupId>org.easytesting</groupId> + <artifactId>fest-swing-junit-4.5</artifactId> + <version>${fest-version}</version> + <scope>test</scope> + </dependency> </dependencies> </dependencyManagement> <build> @@ -131,16 +137,6 @@ </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-surefire-plugin</artifactId> - <version>${surefire-plugin-version}</version> - <configuration> - <redirectTestOutputToFile>true</redirectTestOutputToFile> - <parallel>${surefire-parallel-type}</parallel> - <threadCount>${surefire-thread-count}</threadCount> - </configuration> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>${source-plugin-version}</version> <configuration> Modified: trunk/sql12/pom.xml =================================================================== --- trunk/sql12/pom.xml 2011-03-19 13:40:08 UTC (rev 6201) +++ trunk/sql12/pom.xml 2011-03-19 17:35:17 UTC (rev 6202) @@ -1,4 +1,5 @@ -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>net.sf.squirrel-sql</groupId> <artifactId>squirrel-root-pom</artifactId> @@ -84,6 +85,7 @@ <clover-version>3.0.2</clover-version> <easymock-version>2.4</easymock-version> <easymockclassextension-version>2.4</easymockclassextension-version> + <fest-version>1.2.1</fest-version> <gsbase-version>2.0.1</gsbase-version> <hibernate-annotations-version>3.3.0.ga</hibernate-annotations-version> <izpack-standalone.version>4.3.1</izpack-standalone.version> @@ -92,12 +94,12 @@ <jgoodies-forms-version>1.0.5</jgoodies-forms-version> <mockito-version>1.8.5</mockito-version> <spring-framework-version>2.5.2</spring-framework-version> - + <!-- Other --> <surefire-parallel-type>classes</surefire-parallel-type> <surefire-thread-count>4</surefire-thread-count> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> - + </properties> <modules> <module>fw</module> @@ -141,6 +143,12 @@ <version>${mockito-version}</version> <scope>test</scope> </dependency> + <dependency> + <groupId>org.easytesting</groupId> + <artifactId>fest-swing-junit-4.5</artifactId> + <version>${fest-version}</version> + <scope>test</scope> + </dependency> </dependencies> </dependencyManagement> <build> @@ -190,6 +198,19 @@ <artifactId>maven-surefire-plugin</artifactId> <version>${surefire-plugin-version}</version> <configuration> + <excludes> + <!-- + Until ApplicationArguments can be isolated from being accessed statically by + all code that currently relies on it, we exclude ApplicationArgumentsTest it here + so that it doesn't poison other tests that happen to run after it in the same + JVM. This is only technically required by the "app" project, but at the moment + we wish to share the commonly needed additional exclusion for UI Test classes. + --> + <exclude>**/ApplicationArgumentsTest.java</exclude> + <exclude>**/*UITest.java</exclude> + </excludes> + <parallel>${surefire-parallel-type}</parallel> + <threadCount>${surefire-thread-count}</threadCount> <redirectTestOutputToFile>true</redirectTestOutputToFile> </configuration> </plugin> @@ -203,11 +224,11 @@ <artifactId>maven-release-plugin</artifactId> <version>${release-plugin-version}</version> </plugin> - <plugin> - <groupId>com.atlassian.maven.plugins</groupId> - <artifactId>maven-clover2-plugin</artifactId> - <version>${clover-version}</version> - </plugin> + <plugin> + <groupId>com.atlassian.maven.plugins</groupId> + <artifactId>maven-clover2-plugin</artifactId> + <version>${clover-version}</version> + </plugin> </plugins> </pluginManagement> </build> @@ -276,5 +297,42 @@ </plugins> </build> </profile> + <profile> + <id>uitests</id> + <activation> + <property> + <name>uitests</name> + </property> + </activation> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + <version>${surefire-plugin-version}</version> + <executions> + <execution> + <id>uitests</id> + <phase>test</phase> + <goals> + <goal>test</goal> + </goals> + <configuration> + <redirectTestOutputToFile>true</redirectTestOutputToFile> + <includes> + <include>**/*UITest.java</include> + </includes> + <excludes> + <exclude>**/Abstract*UITest.java</exclude> + </excludes> + <parallel>${surefire-parallel-type}</parallel> + <threadCount>${surefire-thread-count}</threadCount> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> </profiles> </project> Deleted: trunk/sql12/test/jfctests/net/sourceforge/squirrel_sql/client/plugin/gui/AbstractPluginPreferencesUITest.java =================================================================== --- trunk/sql12/test/jfctests/net/sourceforge/squirrel_sql/client/plugin/gui/AbstractPluginPreferencesUITest.java 2011-03-19 13:40:08 UTC (rev 6201) +++ trunk/sql12/test/jfctests/net/sourceforge/squirrel_sql/client/plugin/gui/AbstractPluginPreferencesUITest.java 2011-03-19 17:35:17 UTC (rev 6202) @@ -1,139 +0,0 @@ -/* - * Copyright (C) 2009 Rob Manning - * man...@us... - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package net.sourceforge.squirrel_sql.client.plugin.gui; - -import java.awt.BorderLayout; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.io.File; - -import javax.swing.JButton; -import javax.swing.JFrame; -import javax.swing.JPanel; -import javax.swing.JScrollPane; - -import net.sourceforge.squirrel_sql.BaseSQuirreLJUnit4TestCase; -import net.sourceforge.squirrel_sql.client.plugin.PluginException; -import net.sourceforge.squirrel_sql.client.plugin.PluginQueryTokenizerPreferencesManager; -import net.sourceforge.squirrel_sql.fw.preferences.IQueryTokenizerPreferenceBean; - -import org.fest.swing.annotation.GUITest; -import org.fest.swing.fixture.FrameFixture; -import org.fest.swing.fixture.JCheckBoxFixture; -import org.fest.swing.fixture.JTextComponentFixture; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -/** - * Test base class for UI tests on database-specific plugin preferences panels. - */ -@GUITest -public abstract class AbstractPluginPreferencesUITest extends BaseSQuirreLJUnit4TestCase -{ - - protected JFrame frame = null; - protected FrameFixture fixture = null; - protected PluginQueryTokenizerPreferencesPanel classUnderTest = null; - protected PluginQueryTokenizerPreferencesManager prefsManager = - new PluginQueryTokenizerPreferencesManager(); - protected JCheckBoxFixture useCustomQTCheckBox = null; - - @Before - public void setUp() throws Exception - { - if (frame == null) { - frame = constructTestFrame(); - } - fixture = new FrameFixture(frame); - fixture.show(); - useCustomQTCheckBox = fixture.checkBox("useCustomQTCheckBox"); - } - - @After - public void tearDown() - { - if (fixture != null) { - fixture.cleanUp(); - } - } - - @Test - public void testCustomQTCheckbox() { - JTextComponentFixture lineCommentTextField = fixture.textBox("lineCommentTextField"); - JTextComponentFixture statementSeparatorTextField = fixture.textBox("statementSeparatorTextField"); - - useCustomQTCheckBox.uncheck(); - useCustomQTCheckBox.check(); - useCustomQTCheckBox.uncheck(); - - lineCommentTextField.requireDisabled(); - statementSeparatorTextField.requireDisabled(); - - useCustomQTCheckBox.check(); - lineCommentTextField.requireEnabled(); - statementSeparatorTextField.requireEnabled(); - } - - /** - * Builds the frame that will be used to display the panel. - * - * @return - * @throws Exception - */ - protected JFrame constructTestFrame() throws Exception - { - JFrame f = new JFrame(); - f.getContentPane().setLayout(new BorderLayout()); - File prefsFile = new File("prefs.xml"); - prefsFile.delete(); - prefsManager.initialize(new DummyPlugin(), getPreferenceBean()); - classUnderTest = getPrefsPanelToTest(); - JScrollPane sp = new JScrollPane(classUnderTest); - f.getContentPane().add(sp, BorderLayout.CENTER); - JButton button = new JButton("Save"); - button.setName("saveButton"); - button.addActionListener(new ActionListener() - { - public void actionPerformed(ActionEvent e) - { - classUnderTest.applyChanges(); - prefsManager.unload(); - } - }); - JButton exitButton = new JButton("Exit"); - exitButton.addActionListener(new ActionListener() - { - public void actionPerformed(ActionEvent e) - { - System.exit(0); - } - }); - JPanel buttonPanel = new JPanel(); - buttonPanel.add(button); - buttonPanel.add(exitButton); - f.getContentPane().add(buttonPanel, BorderLayout.SOUTH); - f.setBounds(200, 50, 700, 700); - return f; - } - - protected abstract PluginQueryTokenizerPreferencesPanel getPrefsPanelToTest() throws PluginException; - - protected abstract IQueryTokenizerPreferenceBean getPreferenceBean(); -} \ No newline at end of file Deleted: trunk/sql12/test/jfctests/net/sourceforge/squirrel_sql/plugins/derby/prefs/DerbyPluginPreferencesPanelUITest.java =================================================================== --- trunk/sql12/test/jfctests/net/sourceforge/squirrel_sql/plugins/derby/prefs/DerbyPluginPreferencesPanelUITest.java 2011-03-19 13:40:08 UTC (rev 6201) +++ trunk/sql12/test/jfctests/net/sourceforge/squirrel_sql/plugins/derby/prefs/DerbyPluginPreferencesPanelUITest.java 2011-03-19 17:35:17 UTC (rev 6202) @@ -1,57 +0,0 @@ -/* - * Copyright (C) 2009 Rob Manning - * man...@us... - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package net.sourceforge.squirrel_sql.plugins.derby.prefs; - - -import net.sourceforge.squirrel_sql.client.plugin.PluginException; -import net.sourceforge.squirrel_sql.client.plugin.gui.AbstractPluginPreferencesUITest; -import net.sourceforge.squirrel_sql.client.plugin.gui.PluginQueryTokenizerPreferencesPanel; -import net.sourceforge.squirrel_sql.fw.preferences.BaseQueryTokenizerPreferenceBean; - -import org.fest.swing.annotation.GUITest; - -@GUITest -public class DerbyPluginPreferencesPanelUITest extends AbstractPluginPreferencesUITest -{ - - /** - * The main method is not used at all in the test - it is just here to allow for user interaction testing - * with the graphical component, which doesn't require launching SQuirreL. - * - * @param args - */ - public static void main(String[] args) throws Exception - { - new DerbyPluginPreferencesPanelUITest().constructTestFrame().setVisible(true); - } - - @Override - protected PluginQueryTokenizerPreferencesPanel getPrefsPanelToTest() throws PluginException - { - return new DerbyPluginPreferencesPanel(prefsManager); - } - - @Override - protected BaseQueryTokenizerPreferenceBean getPreferenceBean() - { - return new DerbyPreferenceBean(); - } - - -} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <man...@us...> - 2011-03-19 22:30:29
|
Revision: 6203 http://squirrel-sql.svn.sourceforge.net/squirrel-sql/?rev=6203&view=rev Author: manningr Date: 2011-03-19 22:30:23 +0000 (Sat, 19 Mar 2011) Log Message: ----------- Disabled running normal tests when the uitests profile is enabled (see comment above profile in root pom). Removed needless duplicate surefire configuration in app/pom.xml. Added fest test dependency in example plugin. Modified Paths: -------------- trunk/sql12/app/pom.xml trunk/sql12/plugins/example/pom.xml trunk/sql12/pom.xml Modified: trunk/sql12/app/pom.xml =================================================================== --- trunk/sql12/app/pom.xml 2011-03-19 17:35:17 UTC (rev 6202) +++ trunk/sql12/app/pom.xml 2011-03-19 22:30:23 UTC (rev 6203) @@ -159,29 +159,6 @@ </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-surefire-plugin</artifactId> - <version>${surefire-plugin-version}</version> - <executions> - <execution> - <id>default-test</id> - <phase>test</phase> - <goals> - <goal>test</goal> - </goals> - <configuration> - <redirectTestOutputToFile>true</redirectTestOutputToFile> - <excludes> - <exclude>**/ApplicationArgumentsTest.java</exclude> - <exclude>**/*UITest.java</exclude> - </excludes> - <parallel>${surefire-parallel-type}</parallel> - <threadCount>${surefire-thread-count}</threadCount> - </configuration> - </execution> - </executions> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>${jar-plugin-version}</version> <configuration> @@ -223,43 +200,4 @@ </plugin> </plugins> </build> -<!-- <profiles>--> -<!-- <profile>--> -<!-- <id>uitests</id>--> -<!-- <activation>--> -<!-- <property>--> -<!-- <name>uitests</name>--> -<!-- </property>--> -<!-- </activation>--> -<!-- <build>--> -<!-- <plugins>--> -<!-- <plugin>--> -<!-- <groupId>org.apache.maven.plugins</groupId>--> -<!-- <artifactId>maven-surefire-plugin</artifactId>--> -<!-- <version>${surefire-plugin-version}</version>--> -<!-- <executions>--> -<!-- <execution>--> -<!-- <id>uitests</id>--> -<!-- <phase>test</phase>--> -<!-- <goals>--> -<!-- <goal>test</goal>--> -<!-- </goals>--> -<!-- <configuration>--> -<!-- <redirectTestOutputToFile>true</redirectTestOutputToFile>--> -<!-- <includes>--> -<!-- <include>**/*UITest.java</include>--> -<!-- </includes>--> -<!-- <excludes>--> -<!-- <exclude>**/Abstract*UITest.java</exclude>--> -<!-- </excludes>--> -<!-- <parallel>${surefire-parallel-type}</parallel>--> -<!-- <threadCount>${surefire-thread-count}</threadCount>--> -<!-- </configuration>--> -<!-- </execution>--> -<!-- </executions>--> -<!-- </plugin>--> -<!-- </plugins>--> -<!-- </build>--> -<!-- </profile>--> -<!-- </profiles>--> </project> Modified: trunk/sql12/plugins/example/pom.xml =================================================================== --- trunk/sql12/plugins/example/pom.xml 2011-03-19 17:35:17 UTC (rev 6202) +++ trunk/sql12/plugins/example/pom.xml 2011-03-19 22:30:23 UTC (rev 6203) @@ -104,6 +104,12 @@ <version>${mockito-version}</version> <scope>test</scope> </dependency> + <dependency> + <groupId>org.easytesting</groupId> + <artifactId>fest-swing-junit-4.5</artifactId> + <version>${fest-version}</version> + <scope>test</scope> + </dependency> </dependencies> <properties> <pluginClassName>net.sourceforge.squirrel_sql.plugins.example.ExamplePlugin</pluginClassName> Modified: trunk/sql12/pom.xml =================================================================== --- trunk/sql12/pom.xml 2011-03-19 17:35:17 UTC (rev 6202) +++ trunk/sql12/pom.xml 2011-03-19 22:30:23 UTC (rev 6203) @@ -199,16 +199,22 @@ <version>${surefire-plugin-version}</version> <configuration> <excludes> - <!-- - Until ApplicationArguments can be isolated from being accessed statically by - all code that currently relies on it, we exclude ApplicationArgumentsTest it here - so that it doesn't poison other tests that happen to run after it in the same - JVM. This is only technically required by the "app" project, but at the moment - we wish to share the commonly needed additional exclusion for UI Test classes. + <!-- + Until ApplicationArguments can be isolated from being accessed statically by all code that + currently relies on it, we exclude ApplicationArgumentsTest it here so that it doesn't + poison other tests that happen to run after it in the same JVM. This is only technically + required by the "app" project, but at the moment we wish to share the commonly needed + additional exclusion for UI Test classes. --> <exclude>**/ApplicationArgumentsTest.java</exclude> <exclude>**/*UITest.java</exclude> </excludes> + <systemProperties> + <property> + <name>derby.stream.error.file</name> + <value>target/derby.log</value> + </property> + </systemProperties> <parallel>${surefire-parallel-type}</parallel> <threadCount>${surefire-thread-count}</threadCount> <redirectTestOutputToFile>true</redirectTestOutputToFile> @@ -297,6 +303,16 @@ </plugins> </build> </profile> + <!-- + This profile disables the normal execution of unit tests (src/test/java) and instead runs only + the UI Tests (tests ending in *UITest.java). This was done because when the normal tests are run + along with the UI tests in this configuration it obstructs the normal processing of the Emma code + coverage plugin to have two test phases, where the second one removes the output of the first. So + since the normal tests must be run in Emma without the UI tests, this requires another job in + Hudson to run the UI tests. Rather than have the normal tests run twice, once for code coverage + without UI tests, and once with the UI tests, it was decided to simply disable them in this + profile. + --> <profile> <id>uitests</id> <activation> @@ -312,6 +328,12 @@ <version>${surefire-plugin-version}</version> <executions> <execution> + <id>default-test</id> + <configuration> + <skip>true</skip> + </configuration> + </execution> + <execution> <id>uitests</id> <phase>test</phase> <goals> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ger...@us...> - 2011-03-21 22:58:02
|
Revision: 6204 http://squirrel-sql.svn.sourceforge.net/squirrel-sql/?rev=6204&view=rev Author: gerdwagner Date: 2011-03-21 22:57:54 +0000 (Mon, 21 Mar 2011) Log Message: ----------- More Query Builder Modified Paths: -------------- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/SQLExecuterTask.java trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/event/ISQLExecutionListener.java trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/event/SQLExecutionAdapter.java trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/SQLResultExecuterPanel.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/CellDataPopup.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/DataSetViewerEditableTablePanel.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/RowDataInputFrame.java trunk/sql12/plugins/example/src/main/java/net/sourceforge/squirrel_sql/plugins/example/ExampleSqlExecutionListener.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ConstraintIconHandler.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ConstraintView.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ConstraintViewsModel.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphPluginResources.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphQuerySQLPanel.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphQuerySQLPanelCtrl.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ModeManager.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/QueryBuilderController.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/TableFrameController.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/sqlgen/SelectClauseGenerator.java trunk/sql12/plugins/graph/src/main/resources/net/sourceforge/squirrel_sql/plugins/graph/GraphPluginResources.properties trunk/sql12/plugins/graph/src/main/resources/net/sourceforge/squirrel_sql/plugins/graph/I18NStrings.properties trunk/sql12/plugins/sqlparam/src/main/java/net/sourceforge/squirrel_sql/plugins/sqlparam/SQLParamExecutionListener.java trunk/sql12/plugins/sqlreplace/src/main/java/net/sourceforge/squirrel_sql/plugins/sqlreplace/SQLReplaceExecutionListener.java Added Paths: ----------- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ConstraintIconHandlerListener.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphQueryResultPanel.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphQueryResultPanelCtrl.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/HideDockButtonHandler.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/SyncListener.java trunk/sql12/plugins/graph/src/main/resources/net/sourceforge/squirrel_sql/plugins/graph/images/hidedock.png trunk/sql12/plugins/graph/src/main/resources/net/sourceforge/squirrel_sql/plugins/graph/images/hidedock_sel.png Removed Paths: ------------- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ConstraintViewCreator.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphQueryResultPanel.java Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/SQLExecuterTask.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/SQLExecuterTask.java 2011-03-19 22:30:23 UTC (rev 6203) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/SQLExecuterTask.java 2011-03-21 22:57:54 UTC (rev 6204) @@ -318,10 +318,12 @@ s_log.error("Could not update cache ", t); } } + + fireExecutionListenersFinshed(); } } - /** + /** * Set the fetchSize Arrtibute for the SQL-Statement; */ private void setFetchSize(SessionProperties props) @@ -560,6 +562,24 @@ }); } + private void fireExecutionListenersFinshed() + { + // This method is called from a thread. + // In case listeners update Swing controls we invoke later here. + SwingUtilities.invokeLater(new Runnable() + { + public void run() + { + for (int i = 0; i < _executionListeners.length; i++) + { + _executionListeners[i].executionFinished(); + } + } + }); + } + + + private boolean processResultSet(final ResultSet rs, final SQLExecutionInfo exInfo) { if (_stopExecution) Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/event/ISQLExecutionListener.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/event/ISQLExecutionListener.java 2011-03-19 22:30:23 UTC (rev 6203) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/event/ISQLExecutionListener.java 2011-03-21 22:57:54 UTC (rev 6204) @@ -50,4 +50,6 @@ * */ void statementExecuted(String sql); + + void executionFinished(); } Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/event/SQLExecutionAdapter.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/event/SQLExecutionAdapter.java 2011-03-19 22:30:23 UTC (rev 6203) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/event/SQLExecutionAdapter.java 2011-03-21 22:57:54 UTC (rev 6204) @@ -46,4 +46,9 @@ public void statementExecuted(String sql) { } + + @Override + public void executionFinished() + { + } } Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/SQLResultExecuterPanel.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/SQLResultExecuterPanel.java 2011-03-19 22:30:23 UTC (rev 6203) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/SQLResultExecuterPanel.java 2011-03-21 22:57:54 UTC (rev 6204) @@ -272,6 +272,8 @@ { if (sql != null && sql.trim().length() > 0) { + removeErrorPanels(); + String origSQL = sql; sql = fireSQLToBeExecutedEvent(sql); Modified: trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/CellDataPopup.java =================================================================== --- trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/CellDataPopup.java 2011-03-19 22:30:23 UTC (rev 6203) +++ trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/CellDataPopup.java 2011-03-21 22:57:54 UTC (rev 6204) @@ -17,11 +17,7 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -import java.awt.BorderLayout; -import java.awt.Component; -import java.awt.Dimension; -import java.awt.Point; -import java.awt.Rectangle; +import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; @@ -75,21 +71,10 @@ Component comp = SwingUtilities.getRoot(table); Component newComp = null; - if (false == comp instanceof JFrame) - { - // Fixes ClassCastException, see below. - return; - } - - // The following only works if SwingUtilities.getRoot(table) returns - // and instanceof BaseMDIParentFrame. - // If SwingTUilities.getRoot(table) returns and instance of Dialog or - // Frame, then other code must be used. TextAreaInternalFrame taif = - new TextAreaInternalFrame((JFrame) comp, table.getColumnName(col), colDef, obj, + new TextAreaInternalFrame(table, table.getColumnName(col), colDef, obj, row, col, isModelEditable, table); - //((IMainFrame) comp).addInternalFrame(taif, false); - //taif.setLayer(JLayeredPane.POPUP_LAYER); + taif.pack(); newComp = taif; @@ -176,7 +161,6 @@ // private static class ColumnDataPopupPanel extends JPanel { - private static final long serialVersionUID = 1L; private final PopupEditableIOPanel ioPanel; private JDialog _parentFrame = null; private int _row; @@ -298,14 +282,14 @@ // root type is Dialog or Frame, then other code must be used. class TextAreaInternalFrame extends JDialog { - private static final long serialVersionUID = 1L; - public TextAreaInternalFrame(JFrame owner, String columnName, ColumnDisplayDefinition colDef, + public TextAreaInternalFrame(Component comp, String columnName, ColumnDisplayDefinition colDef, Object value, int row, int col, boolean isModelEditable, JTable table) { - // i18n[cellDataPopup.valueofColumn=Value of column {0}] - super(owner, s_stringMgr.getString("cellDataPopup.valueofColumn", columnName), false); + + // i18n[cellDataPopup.valueofColumn=Value of column {0}] + super(SwingUtilities.windowForComponent(comp), s_stringMgr.getString("cellDataPopup.valueofColumn", columnName)); ColumnDataPopupPanel popup = new ColumnDataPopupPanel(value, colDef, isModelEditable); popup.setUserActionInfo(this, row, col, table); @@ -313,7 +297,6 @@ AbstractAction closeAction = new AbstractAction() { - private static final long serialVersionUID = 1L; public void actionPerformed(ActionEvent actionEvent) { Modified: trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/DataSetViewerEditableTablePanel.java =================================================================== --- trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/DataSetViewerEditableTablePanel.java 2011-03-19 22:30:23 UTC (rev 6203) +++ trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/DataSetViewerEditableTablePanel.java 2011-03-21 22:57:54 UTC (rev 6204) @@ -377,11 +377,6 @@ Component comp = SwingUtilities.getRoot(table); - if(null == comp || false == comp instanceof JFrame) - { - return; - } - // get the default values from the DB for the table columns String[] dbDefaultValues = ((IDataSetUpdateableTableModel)getUpdateableModelReference()). @@ -399,7 +394,7 @@ // and instanceof BaseMDIParentFrame. // If SwingTUilities.getRoot(table) returns and instance of Dialog or // Frame, then other code must be used. - RowDataInputFrame rdif = new RowDataInputFrame((JFrame) comp, _colDefs, initialValues, this); + RowDataInputFrame rdif = new RowDataInputFrame( table, _colDefs, initialValues, this); // ((IMainFrame)comp).addInternalFrame(rdif, false); // rdif.setLayer(JLayeredPane.POPUP_LAYER); rdif.pack(); Modified: trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/RowDataInputFrame.java =================================================================== --- trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/RowDataInputFrame.java 2011-03-19 22:30:23 UTC (rev 6203) +++ trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/RowDataInputFrame.java 2011-03-21 22:57:54 UTC (rev 6204) @@ -52,7 +52,6 @@ public class RowDataInputFrame extends JDialog implements ActionListener { - private static final long serialVersionUID = 1L; private static final StringManager s_stringMgr = StringManagerFactory.getStringManager(RowDataInputFrame.class); @@ -66,12 +65,12 @@ /** * ctor. */ - public RowDataInputFrame(JFrame parent, ColumnDisplayDefinition[] colDefs, + public RowDataInputFrame(Component comp, ColumnDisplayDefinition[] colDefs, Object[] initialValues, DataSetViewerEditableTablePanel caller) { // i18n[rowDataInputFrame.propName=Input New Row Data] - super(parent, s_stringMgr.getString("rowDataInputFrame.propName"), false); + super(SwingUtilities.windowForComponent(comp), s_stringMgr.getString("rowDataInputFrame.propName")); // get the ConentPane into a variable for convenience Container pane = getContentPane(); @@ -183,7 +182,6 @@ * JTable for use in creating data for insertion. */ class RowDataJTable extends JTable { - private static final long serialVersionUID = 1L; private ColumnDisplayDefinition[] _colDefs = null; /** @@ -337,7 +335,6 @@ */ class RowDataModel extends DefaultTableModel { - private static final long serialVersionUID = 1L; /** * ctor Modified: trunk/sql12/plugins/example/src/main/java/net/sourceforge/squirrel_sql/plugins/example/ExampleSqlExecutionListener.java =================================================================== --- trunk/sql12/plugins/example/src/main/java/net/sourceforge/squirrel_sql/plugins/example/ExampleSqlExecutionListener.java 2011-03-19 22:30:23 UTC (rev 6203) +++ trunk/sql12/plugins/example/src/main/java/net/sourceforge/squirrel_sql/plugins/example/ExampleSqlExecutionListener.java 2011-03-21 22:57:54 UTC (rev 6204) @@ -1,6 +1,7 @@ package net.sourceforge.squirrel_sql.plugins.example; import net.sourceforge.squirrel_sql.client.session.event.ISQLExecutionListener; +import net.sourceforge.squirrel_sql.client.session.event.SQLExecutionAdapter; import net.sourceforge.squirrel_sql.fw.util.IMessageHandler; /* @@ -26,7 +27,7 @@ * A simple ISQLExecutionListener that displays the SQL as it is being executed in the main application * message panel (at the bottom of the application). */ -public class ExampleSqlExecutionListener implements ISQLExecutionListener +public class ExampleSqlExecutionListener extends SQLExecutionAdapter { /** This is what gives the ability to print a message to the message panel */ private final IMessageHandler _messageHandler; @@ -51,4 +52,8 @@ return sql; } + public void executionFinished() + { + } + } Modified: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ConstraintIconHandler.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ConstraintIconHandler.java 2011-03-19 22:30:23 UTC (rev 6203) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ConstraintIconHandler.java 2011-03-21 22:57:54 UTC (rev 6204) @@ -13,8 +13,14 @@ { private static final StringManager s_stringMgr = StringManagerFactory.getStringManager(ConstraintIconHandler.class); + private ConstraintIconHandlerListener _constraintIconHandlerListener; + public ConstraintIconHandler(ConstraintIconHandlerListener constraintIconHandlerListener) + { + _constraintIconHandlerListener = constraintIconHandlerListener; + } + void paintJoinIcon(Graphics g, GraphLine line, TableFrameController fkFrameOriginatingFrom, @@ -228,6 +234,7 @@ if (noneMenuItem.isSelected()) { constraintData.getConstraintQueryData().setNoJoin(); + _constraintIconHandlerListener.constraintTypeChanged(); } } @@ -236,6 +243,7 @@ if (leftmenuItem.isSelected()) { constraintData.getConstraintQueryData().setOuterJoin(outerTableName); + _constraintIconHandlerListener.constraintTypeChanged(); } } @@ -244,6 +252,7 @@ if (innerMenuItem.isSelected()) { constraintData.getConstraintQueryData().setInnerJoin(); + _constraintIconHandlerListener.constraintTypeChanged(); } } } Added: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ConstraintIconHandlerListener.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ConstraintIconHandlerListener.java (rev 0) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ConstraintIconHandlerListener.java 2011-03-21 22:57:54 UTC (rev 6204) @@ -0,0 +1,6 @@ +package net.sourceforge.squirrel_sql.plugins.graph; + +public interface ConstraintIconHandlerListener +{ + public void constraintTypeChanged(); +} Modified: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ConstraintView.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ConstraintView.java 2011-03-19 22:30:23 UTC (rev 6203) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ConstraintView.java 2011-03-21 22:57:54 UTC (rev 6204) @@ -46,10 +46,11 @@ private TableFrameController _fkFrameOriginatingFrom; private TableFrameController _pkFramePointingTo; private Vector<ConstraintViewListener> _constraintViewListeners = new Vector<ConstraintViewListener>(); - private ConstraintIconHandler _constraintIconHandler = new ConstraintIconHandler(); + private ConstraintIconHandler _constraintIconHandler; - public ConstraintView(ConstraintData constraintData, GraphDesktopController desktopController, ISession session) + public ConstraintView(ConstraintData constraintData, GraphDesktopController desktopController, ISession session, ConstraintIconHandlerListener constraintIconHandlerListener) { + _constraintIconHandler = new ConstraintIconHandler(constraintIconHandlerListener); _constraintData = constraintData; _desktopController = desktopController; _session = session; @@ -57,8 +58,9 @@ createPopup(); } - public ConstraintView(ConstraintViewXmlBean constraintViewXmlBean, GraphDesktopController desktopController, ISession session) + public ConstraintView(ConstraintViewXmlBean constraintViewXmlBean, GraphDesktopController desktopController, ISession session, ConstraintIconHandlerListener constraintIconHandlerListener) { + _constraintIconHandler = new ConstraintIconHandler(constraintIconHandlerListener); _desktopController = desktopController; _session = session; _constraintData = new ConstraintData(constraintViewXmlBean.getConstraintDataXmlBean()); Deleted: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ConstraintViewCreator.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ConstraintViewCreator.java 2011-03-19 22:30:23 UTC (rev 6203) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ConstraintViewCreator.java 2011-03-21 22:57:54 UTC (rev 6204) @@ -1,48 +0,0 @@ -package net.sourceforge.squirrel_sql.plugins.graph; - -import net.sourceforge.squirrel_sql.client.session.ISession; -import net.sourceforge.squirrel_sql.fw.util.StringManager; -import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory; - -public class ConstraintViewCreator -{ - - private static final StringManager s_stringMgr = StringManagerFactory.getStringManager(ConstraintViewCreator.class); - - - public static ConstraintView createConstraintView(DndEvent e, TableFrameController sourceTable, ColumnInfo sourceColumnInfo, GraphDesktopController desktopController, ISession session) - { - ColumnInfo targetColumnInfo = e.getColumnInfo(); - TableFrameController targetTable = e.getTableFrameController(); - - if(null == targetColumnInfo || null == sourceColumnInfo || targetTable == sourceTable) - { - return null; - } - - if(null != targetColumnInfo.getImportedColumnName()) - { - // i18n[graph.nonDbConstraintCreationError_already_points=A column cannot reference more than one other column. Non DB constraint could not be created.] - session.getApplication().getMessageHandler().showErrorMessage(s_stringMgr.getString("graph.nonDbConstraintCreationError_already_points")); - return null; - } - - String constName = "SquirrelGeneratedConstraintName"; - - ConstraintData data = new ConstraintData( - sourceTable.getTableInfo().getSimpleName(), - targetTable.getTableInfo().getSimpleName(), - constName, - true); - - - - targetColumnInfo.setImportData(sourceTable.getTableInfo().getSimpleName(), sourceColumnInfo.getName(), constName, true); - - - data.addColumnInfo(targetColumnInfo); - ConstraintView ret = new ConstraintView(data, desktopController, session); - - return ret; - } -} Modified: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ConstraintViewsModel.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ConstraintViewsModel.java 2011-03-19 22:30:23 UTC (rev 6203) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ConstraintViewsModel.java 2011-03-21 22:57:54 UTC (rev 6204) @@ -1,6 +1,8 @@ package net.sourceforge.squirrel_sql.plugins.graph; import net.sourceforge.squirrel_sql.client.session.ISession; +import net.sourceforge.squirrel_sql.fw.util.StringManager; +import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory; import net.sourceforge.squirrel_sql.fw.util.log.ILogger; import net.sourceforge.squirrel_sql.fw.util.log.LoggerController; import net.sourceforge.squirrel_sql.plugins.graph.xmlbeans.ConstraintViewXmlBean; @@ -16,15 +18,27 @@ public class ConstraintViewsModel { private final static ILogger s_log = LoggerController.createLogger(ConstraintViewsModel.class); + static final StringManager s_stringMgr = StringManagerFactory.getStringManager(ConstraintViewsModel.class); private ConstraintView[] _constraintViews = new ConstraintView[0]; private ISession _session; private ArrayList<ConstraintViewsModelListener> _listeners = new ArrayList<ConstraintViewsModelListener>(); + private ConstraintIconHandlerListener _constraintIconHandlerListener; public ConstraintViewsModel(ISession session) { _session = session; + + _constraintIconHandlerListener = new ConstraintIconHandlerListener() + { + @Override + public void constraintTypeChanged() + { + fireListeners(); + } + }; + } @@ -38,7 +52,7 @@ _constraintViews = new ConstraintView[constraintViewXmlBeans.length]; for (int i = 0; i < _constraintViews.length; i++) { - _constraintViews[i] = new ConstraintView(constraintViewXmlBeans[i], desktopController, _session); + _constraintViews[i] = new ConstraintView(constraintViewXmlBeans[i], desktopController, _session, _constraintIconHandlerListener); _constraintViews[i].replaceCopiedColsByReferences(colInfos, false); } } @@ -156,7 +170,7 @@ } else { - newConstraintViewsBuf.add(new ConstraintView(newDBconstraintData[i], desktopController, _session)); + newConstraintViewsBuf.add(new ConstraintView(newDBconstraintData[i], desktopController, _session, _constraintIconHandlerListener)); } } @@ -168,7 +182,45 @@ _constraintViews = newConstraintViewsBuf.toArray(new ConstraintView[newConstraintViewsBuf.size()]); } + public ConstraintView createConstraintView(DndEvent e, TableFrameController sourceTable, ColumnInfo sourceColumnInfo, GraphDesktopController desktopController, ISession session) + { + ColumnInfo targetColumnInfo = e.getColumnInfo(); + TableFrameController targetTable = e.getTableFrameController(); + if(null == targetColumnInfo || null == sourceColumnInfo || targetTable == sourceTable) + { + return null; + } + + if(null != targetColumnInfo.getImportedColumnName()) + { + // i18n[graph.nonDbConstraintCreationError_already_points=A column cannot reference more than one other column. Non DB constraint could not be created.] + session.getApplication().getMessageHandler().showErrorMessage(s_stringMgr.getString("graph.nonDbConstraintCreationError_already_points")); + return null; + } + + String constName = "SquirrelGeneratedConstraintName"; + + ConstraintData data = new ConstraintData( + sourceTable.getTableInfo().getSimpleName(), + targetTable.getTableInfo().getSimpleName(), + constName, + true); + + + + targetColumnInfo.setImportData(sourceTable.getTableInfo().getSimpleName(), sourceColumnInfo.getName(), constName, true); + + + data.addColumnInfo(targetColumnInfo); + ConstraintView ret = new ConstraintView(data, desktopController, session, _constraintIconHandlerListener); + + addConst(ret); + return ret; + } + + + private void removeOverlappingConstraints(ArrayList<ConstraintView> master, ArrayList<ConstraintView> toRemoveFrom) { ArrayList<ConstraintView> removeBuf = new ArrayList<ConstraintView>(); Modified: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphPluginResources.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphPluginResources.java 2011-03-19 22:30:23 UTC (rev 6203) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphPluginResources.java 2011-03-21 22:57:54 UTC (rev 6204) @@ -33,5 +33,8 @@ String TO_WINDOW = "ToWindow"; String SHOW_MENU = "Showmenu"; + + String HIDE_DOCK = "Hidedock"; + String HIDE_DOCK_SEL = "HidedockSel"; } } Deleted: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphQueryResultPanel.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphQueryResultPanel.java 2011-03-19 22:30:23 UTC (rev 6203) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphQueryResultPanel.java 2011-03-21 22:57:54 UTC (rev 6204) @@ -1,11 +0,0 @@ -package net.sourceforge.squirrel_sql.plugins.graph; - -import javax.swing.*; - -public class GraphQueryResultPanel extends JPanel -{ - public GraphQueryResultPanel() - { - add(new JLabel("Result Panel (will be implemented soon)")); - } -} Added: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphQueryResultPanel.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphQueryResultPanel.java (rev 0) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphQueryResultPanel.java 2011-03-21 22:57:54 UTC (rev 6204) @@ -0,0 +1,53 @@ +package net.sourceforge.squirrel_sql.plugins.graph; + +import net.sourceforge.squirrel_sql.client.session.ISession; +import net.sourceforge.squirrel_sql.client.session.mainpanel.SQLResultExecuterPanel; +import net.sourceforge.squirrel_sql.fw.util.StringManager; +import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory; + +import javax.swing.*; +import java.awt.*; + +public class GraphQueryResultPanel extends JPanel +{ + private static final StringManager s_stringMgr = StringManagerFactory.getStringManager(GraphQueryResultPanel.class); + + SQLResultExecuterPanel resultExecuterPanel; + JCheckBox chkAutoSyncSQL; + JButton btnSyncSQLNow; + + + public GraphQueryResultPanel(ISession session, HideDockButtonHandler hideDockButtonHandler) + { + setLayout(new BorderLayout()); + + resultExecuterPanel = new SQLResultExecuterPanel(session); + add(createButtonPanel(hideDockButtonHandler), BorderLayout.NORTH); + add(resultExecuterPanel, BorderLayout.CENTER); + } + + private JPanel createButtonPanel(HideDockButtonHandler hideDockButtonHandler) + { + JPanel ret = new JPanel(new GridBagLayout()); + + GridBagConstraints gbc; + + gbc = new GridBagConstraints(0,0,1,1,0,0,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5,5,5,10),0,0); + ret.add(hideDockButtonHandler.getHideButton(), gbc); + + gbc = new GridBagConstraints(1,0,1,1,0,0,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5,0,5,5),0,0); + chkAutoSyncSQL = new JCheckBox(s_stringMgr.getString("graph.GraphQueryResultPanel.autoSyncResult")); + ret.add(chkAutoSyncSQL, gbc); + + gbc = new GridBagConstraints(2,0,1,1,0,0,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5,0,5,5),0,0); + btnSyncSQLNow = new JButton(s_stringMgr.getString("graph.GraphQueryResultPanel.syncResultNow")); + ret.add(btnSyncSQLNow, gbc); + + gbc = new GridBagConstraints(3,0,1,1,1,1,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5,0,5,5),0,0); + ret.add(new JPanel(), gbc); + + return ret; + } + + +} Added: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphQueryResultPanelCtrl.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphQueryResultPanelCtrl.java (rev 0) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphQueryResultPanelCtrl.java 2011-03-21 22:57:54 UTC (rev 6204) @@ -0,0 +1,103 @@ +package net.sourceforge.squirrel_sql.plugins.graph; + +import net.sourceforge.squirrel_sql.client.session.ISession; +import net.sourceforge.squirrel_sql.client.session.event.SQLExecutionAdapter; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +public class GraphQueryResultPanelCtrl +{ + private GraphQueryResultPanel _graphQueryResultPanel; + private String _lastSQL; + private boolean _isExecuting; + private String _nextSQL; + + public GraphQueryResultPanelCtrl(ISession session, HideDockButtonHandler hideDockButtonHandler, final SyncListener syncListener) + { + _graphQueryResultPanel = new GraphQueryResultPanel(session, hideDockButtonHandler); + + _graphQueryResultPanel.btnSyncSQLNow.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + syncListener.synRequested(); + } + }); + + _graphQueryResultPanel.chkAutoSyncSQL.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + onAutoSyncChanged(syncListener); + } + }); + + _graphQueryResultPanel.resultExecuterPanel.addSQLExecutionListener(new SQLExecutionAdapter(){ + @Override + public void executionFinished() + { + onSQLExecutionFinished(); + } + }); + } + + private void onSQLExecutionFinished() + { + _isExecuting = false; + if(null != _nextSQL) + { + String nextSQL = _nextSQL; + _nextSQL = null; + execSQL(nextSQL); + } + } + + private void onAutoSyncChanged(SyncListener syncListener) + { + if(_graphQueryResultPanel.chkAutoSyncSQL.isSelected()) + { + syncListener.synRequested(); + } + } + + + public void execSQL(String sql) + { + if (null != _lastSQL && _lastSQL.trim().equals(sql)) + { + return; + } + _lastSQL = null; + + + if(null == sql || 0 == sql.trim().length()) + { + return; + } + + + + if(_isExecuting) + { + _nextSQL = sql; + return; + } + + _isExecuting = true; + _graphQueryResultPanel.resultExecuterPanel.executeSQL(sql); + _lastSQL = sql; + } + + public GraphQueryResultPanel getGraphQuerySQLPanel() + { + return _graphQueryResultPanel; + } + + public boolean isAutoSync() + { + return _graphQueryResultPanel.chkAutoSyncSQL.isSelected(); + } +} Modified: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphQuerySQLPanel.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphQuerySQLPanel.java 2011-03-19 22:30:23 UTC (rev 6203) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphQuerySQLPanel.java 2011-03-21 22:57:54 UTC (rev 6204) @@ -1,13 +1,46 @@ package net.sourceforge.squirrel_sql.plugins.graph; +import net.sourceforge.squirrel_sql.fw.util.StringManager; +import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory; + import javax.swing.*; import java.awt.*; public class GraphQuerySQLPanel extends JPanel { - public GraphQuerySQLPanel(JComponent editor) + private static final StringManager s_stringMgr = StringManagerFactory.getStringManager(GraphQuerySQLPanel.class); + + JCheckBox chkAutoSyncSQL; + JButton btnSyncSQLNow; + + public GraphQuerySQLPanel(JComponent editor, HideDockButtonHandler hideDockButtonHandler) { - setLayout(new GridLayout(1,1)); - add(editor); + setLayout(new BorderLayout()); + add(createButtonPanel(hideDockButtonHandler), BorderLayout.NORTH); + editor.setBorder(BorderFactory.createEtchedBorder()); + add(editor, BorderLayout.CENTER); } + + private JPanel createButtonPanel(HideDockButtonHandler hideDockButtonHandler) + { + JPanel ret = new JPanel(new GridBagLayout()); + + GridBagConstraints gbc; + + gbc = new GridBagConstraints(0,0,1,1,0,0,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5,5,5,10),0,0); + ret.add(hideDockButtonHandler.getHideButton(), gbc); + + gbc = new GridBagConstraints(1,0,1,1,0,0,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5,0,5,5),0,0); + chkAutoSyncSQL = new JCheckBox(s_stringMgr.getString("graph.GraphQuerySQLPanel.autoSyncSQL")); + ret.add(chkAutoSyncSQL, gbc); + + gbc = new GridBagConstraints(2,0,1,1,0,0,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5,0,5,5),0,0); + btnSyncSQLNow = new JButton(s_stringMgr.getString("graph.GraphQuerySQLPanel.syncSQLNow")); + ret.add(btnSyncSQLNow, gbc); + + gbc = new GridBagConstraints(3,0,1,1,1,1,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5,0,5,5),0,0); + ret.add(new JPanel(), gbc); + + return ret; + } } Modified: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphQuerySQLPanelCtrl.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphQuerySQLPanelCtrl.java 2011-03-19 22:30:23 UTC (rev 6203) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphQuerySQLPanelCtrl.java 2011-03-21 22:57:54 UTC (rev 6204) @@ -3,20 +3,59 @@ import net.sourceforge.squirrel_sql.client.session.EntryPanelManager; import net.sourceforge.squirrel_sql.client.session.ISession; -import javax.swing.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.prefs.Preferences; public class GraphQuerySQLPanelCtrl { private GraphQuerySQLPanel _graphQuerySQLPanel; private EntryPanelManager _entryPanelManager; - public GraphQuerySQLPanelCtrl(ISession session) + private static final String PREF_KEY_SQUIRREL_GRAPH_SQL_AUTO_SYNC = "Squirrel.graph.sqlAutoSync"; + + + public GraphQuerySQLPanelCtrl(ISession session, HideDockButtonHandler hideDockButtonHandler, final SyncListener syncListener) { _entryPanelManager = new EntryPanelManager(session); _entryPanelManager.init(null, null); - _graphQuerySQLPanel = new GraphQuerySQLPanel(_entryPanelManager.getComponent()); + _graphQuerySQLPanel = new GraphQuerySQLPanel(_entryPanelManager.getComponent(), hideDockButtonHandler); + + _graphQuerySQLPanel.chkAutoSyncSQL.setSelected(Preferences.userRoot().getBoolean(PREF_KEY_SQUIRREL_GRAPH_SQL_AUTO_SYNC, true)); + + _graphQuerySQLPanel.chkAutoSyncSQL.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + onAutoSyncChanged(syncListener); + } + }); + + _graphQuerySQLPanel.btnSyncSQLNow.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + syncListener.synRequested(); + } + }); + + + } + + private void onAutoSyncChanged(SyncListener syncListener) + { + Preferences.userRoot().putBoolean(PREF_KEY_SQUIRREL_GRAPH_SQL_AUTO_SYNC, _graphQuerySQLPanel.chkAutoSyncSQL.isSelected()); + + if(_graphQuerySQLPanel.chkAutoSyncSQL.isSelected()) + { + syncListener.synRequested(); + } + } + public GraphQuerySQLPanel getGraphQuerySQLPanel() { return _graphQuerySQLPanel; @@ -27,4 +66,9 @@ { _entryPanelManager.getEntryPanel().setText(sql, false); } + + public boolean isAutoSync() + { + return _graphQuerySQLPanel.chkAutoSyncSQL.isSelected(); + } } Added: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/HideDockButtonHandler.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/HideDockButtonHandler.java (rev 0) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/HideDockButtonHandler.java 2011-03-21 22:57:54 UTC (rev 6204) @@ -0,0 +1,41 @@ +package net.sourceforge.squirrel_sql.plugins.graph; + +import net.sourceforge.squirrel_sql.fw.util.StringManager; +import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory; + +import javax.swing.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +public class HideDockButtonHandler +{ + private static final StringManager s_stringMgr = StringManagerFactory.getStringManager(HideDockButtonHandler.class); + + private JToggleButton _btnToClickOnHide; + private JButton _bntHide; + + + public HideDockButtonHandler(JToggleButton btnToClickOnHide, GraphPluginResources rsrc) + { + _btnToClickOnHide = btnToClickOnHide; + + _bntHide = new JButton(rsrc.getIcon(GraphPluginResources.IKeys.HIDE_DOCK)); + _bntHide.setPressedIcon(rsrc.getIcon(GraphPluginResources.IKeys.HIDE_DOCK_SEL)); + _bntHide.setToolTipText(s_stringMgr.getString("graph.GraphQuerySQLPanel.hide")); + _bntHide.setBorder(BorderFactory.createEmptyBorder()); + + _bntHide.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + _btnToClickOnHide.doClick(0); + } + }); + } + + public JButton getHideButton() + { + return _bntHide; + } +} Modified: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ModeManager.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ModeManager.java 2011-03-19 22:30:23 UTC (rev 6203) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ModeManager.java 2011-03-21 22:57:54 UTC (rev 6204) @@ -121,7 +121,7 @@ _zoomPrintController = new ZoomPrintController(zoomerXmlBean, printXmlBean, edgesListener, desktopPane, _session, _plugin, startButtonHandler); startButtonHandler = new StartButtonHandler(_graphControllerFacade, rsrc); - _queryBuilderController = new QueryBuilderController(_tableFramesModel, _graphControllerFacade, _session, startButtonHandler); + _queryBuilderController = new QueryBuilderController(_tableFramesModel, _graphControllerFacade, _session, _plugin, startButtonHandler); startButtonHandler = new StartButtonHandler(_graphControllerFacade, rsrc); _defaultController = new DefaultController(startButtonHandler); Modified: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/QueryBuilderController.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/QueryBuilderController.java 2011-03-19 22:30:23 UTC (rev 6203) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/QueryBuilderController.java 2011-03-21 22:57:54 UTC (rev 6204) @@ -18,10 +18,8 @@ private static final String PREF_KEY_SQL_DOCK_HEIGHT = "Squirrel.graph.sqldock.height"; private static final String PREF_KEY_RESULT_DOCK_HEIGHT = "Squirrel.graph.resultdock.height"; - private static final StringManager s_stringMgr = StringManagerFactory.getStringManager(QueryBuilderController.class); - private JPanel _panel; private JToggleButton _btnSQL; private JToggleButton _btnResult; @@ -30,9 +28,10 @@ private TableFramesModel _tableFramesModel; private ISession _session; private GraphQuerySQLPanelCtrl _graphQuerySQLPanelCtrl; + private GraphQueryResultPanelCtrl _graphQueryResultPanelCtrl; private SessionAdapter _sessionAdapter; - public QueryBuilderController(TableFramesModel tableFramesModel, GraphControllerFacade graphControllerFacade, ISession session, StartButtonHandler startButtonHandler) + public QueryBuilderController(TableFramesModel tableFramesModel, GraphControllerFacade graphControllerFacade, ISession session, GraphPlugin plugin, StartButtonHandler startButtonHandler) { _tableFramesModel = tableFramesModel; _session = session; @@ -55,7 +54,9 @@ gbc = new GridBagConstraints(3,0,1,1,1,1, GridBagConstraints.NORTHEAST, GridBagConstraints.NONE, new Insets(0,0,0,5),0,0); _panel.add(new JPanel(), gbc); - _graphQuerySQLPanelCtrl = new GraphQuerySQLPanelCtrl(_session); + GraphPluginResources rsrc = new GraphPluginResources(plugin); + _graphQuerySQLPanelCtrl = new GraphQuerySQLPanelCtrl(_session, new HideDockButtonHandler(_btnSQL, rsrc), createSQLSyncListener()); + _graphQueryResultPanelCtrl = new GraphQueryResultPanelCtrl(_session, new HideDockButtonHandler(_btnResult, rsrc), createResultSyncListener()); initHandels(graphControllerFacade); @@ -101,13 +102,42 @@ }); } + private SyncListener createResultSyncListener() + { + return new SyncListener() + { + @Override + public void synRequested() + { + _graphQueryResultPanelCtrl.execSQL(new QueryBuilderSQLGenerator(_session).generateSQL(_tableFramesModel)); + } + }; + } + private SyncListener createSQLSyncListener() + { + return new SyncListener() + { + @Override + public void synRequested() + { + _graphQuerySQLPanelCtrl.setSQL(new QueryBuilderSQLGenerator(_session).generateSQL(_tableFramesModel)); + } + }; + + } + + private void onModelChanged() { - if (_sqlDockHandle.isShowing()) + if (_sqlDockHandle.isShowing() && _graphQuerySQLPanelCtrl.isAutoSync()) { _graphQuerySQLPanelCtrl.setSQL(new QueryBuilderSQLGenerator(_session).generateSQL(_tableFramesModel)); } + else if(_resultDockHandle.isShowing() && _graphQueryResultPanelCtrl.isAutoSync()) + { + _graphQueryResultPanelCtrl.execSQL(new QueryBuilderSQLGenerator(_session).generateSQL(_tableFramesModel)); + } } private void initHandels(GraphControllerFacade graphControllerFacade) @@ -116,7 +146,7 @@ _sqlDockHandle = new GraphDockHandle(graphControllerFacade, _graphQuerySQLPanelCtrl.getGraphQuerySQLPanel(), sqlHeight); int resHeight = Preferences.userRoot().getInt(PREF_KEY_RESULT_DOCK_HEIGHT, 250); - _resultDockHandle = new GraphDockHandle(graphControllerFacade, new GraphQueryResultPanel(), resHeight); + _resultDockHandle = new GraphDockHandle(graphControllerFacade, _graphQueryResultPanelCtrl.getGraphQuerySQLPanel(), resHeight); } private void onSessionClosing() @@ -139,6 +169,7 @@ _btnSQL.setSelected(false); } _resultDockHandle.show(); + onModelChanged(); } else { Added: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/SyncListener.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/SyncListener.java (rev 0) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/SyncListener.java 2011-03-21 22:57:54 UTC (rev 6204) @@ -0,0 +1,6 @@ +package net.sourceforge.squirrel_sql.plugins.graph; + +public interface SyncListener +{ + void synRequested(); +} Modified: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/TableFrameController.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/TableFrameController.java 2011-03-19 22:30:23 UTC (rev 6203) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/TableFrameController.java 2011-03-21 22:57:54 UTC (rev 6204) @@ -22,7 +22,6 @@ import net.sourceforge.squirrel_sql.client.session.ISession; import net.sourceforge.squirrel_sql.client.session.ObjectTreeSearch; import net.sourceforge.squirrel_sql.client.session.schemainfo.ObjFilterMatcher; -import net.sourceforge.squirrel_sql.fw.datasetviewer.IDataSetUpdateableTableModel; import net.sourceforge.squirrel_sql.fw.sql.ITableInfo; import net.sourceforge.squirrel_sql.fw.sql.PrimaryKeyInfo; import net.sourceforge.squirrel_sql.fw.sql.SQLDatabaseMetaData; @@ -274,26 +273,21 @@ private void onDndImportDone(DndEvent e, Point dropPoint) { - ConstraintView constView = ConstraintViewCreator.createConstraintView( - e, - this, - getColumnInfoForPoint(dropPoint), - _desktopController, - _session + TableFrameController fkTable = e.getTableFrameController(); + + ConstraintView constraintView = fkTable._constraintViewsModel.createConstraintView( + e, + this, + getColumnInfoForPoint(dropPoint), + _desktopController, + _session ); - if(null == constView) + if (null != constraintView) { - return; + fkTable.recalculateAllConnections(true); } - - - TableFrameController fkTable = e.getTableFrameController(); - - fkTable._constraintViewsModel.addConst(constView); - - fkTable.recalculateAllConnections(true); } private void onRemoveNonDbConstraint(ConstraintView constraintView) Modified: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/sqlgen/SelectClauseGenerator.java =================================================================== --- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/sqlgen/SelectClauseGenerator.java 2011-03-19 22:30:23 UTC (rev 6203) +++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/sqlgen/SelectClauseGenerator.java 2011-03-21 22:57:54 UTC (rev 6204) @@ -13,7 +13,9 @@ boolean colAdded = false; boolean hasAggFct = false; + boolean groupByHasCols = false; + for (TableFrameController tfc : fromClause.getTables()) { for (ColumnInfo columnInfo : tfc.getColumnInfos()) @@ -27,6 +29,7 @@ String s = tfc.getTableInfo().getSimpleName() + "." + columnInfo.getColumnName() + ","; select.append(s); groupBy.append(s); + groupByHasCols = true; } else { @@ -45,7 +48,7 @@ select.setLength(select.length() - 1); // cut off the last comma. - if(hasAggFct) + if(hasAggFct && groupByHasCols) { groupBy.setLength(groupBy.length() - 1); // cut off the last comma. return new SelectClauseRes(select, groupBy); Modified: trunk/sql12/plugins/graph/src/main/resources/net/sourceforge/squirrel_sql/plugins/graph/GraphPluginResources.properties =================================================================== --- trunk/sql12/plugins/graph/src/main/resources/net/sourceforge/squirrel_sql/plugins/graph/GraphPluginResources.properties 2011-03-19 22:30:23 UTC (rev 6203) +++ trunk/sql12/plugins/graph/src/main/resources/net/sourceforge/squirrel_sql/plugins/graph/GraphPluginResources.properties 2011-03-21 22:57:54 UTC (rev 6204) @@ -27,6 +27,8 @@ Showmenu.image=showmenu.gif +Hidedock.image=hidedock.png +HidedockSel.image=hidedock_sel.png @@ -34,3 +36,4 @@ + Modified: trunk/sql12/plugins/graph/src/main/resources/net/sourceforge/squirrel_sql/plugins/graph/I18NStrings.properties =================================================================== --- trunk/sql12/plugins/graph/src/main/resources/net/sourceforge/squirrel_sql/plugins/graph/I18NStrings.properties 2011-03-19 22:30:23 UTC (rev 6203) +++ trunk/sql12/plugins/graph/src/main/resources/net/sourceforge/squirrel_sql/plugins/graph/I18NStrings.properties 2011-03-21 22:57:54 UTC (rev 6204) @@ -186,4 +186,12 @@ QueryBuilderController.Result=Result QueryBuilderController.SQL=SQL -graph.StartButtonHandler.Kickoff= Kick off / Start \ No newline at end of file +graph.StartButtonHandler.Kickoff= Kick off / Start + +graph.GraphQuerySQLPanel.hide=Hide + +graph.GraphQuerySQLPanel.autoSyncSQL=Auto sync SQL +graph.GraphQuerySQLPanel.syncSQLNow=Sync SQL + +graph.GraphQueryResultPanel.autoSyncResult=Auto sync result +graph.GraphQueryResultPanel.syncResultNow=Sync result Added: trunk/sql12/plugins/graph/src/main/resources/net/sourceforge/squirrel_sql/plugins/graph/images/hidedock.png =================================================================== (Binary files differ) Property changes on: trunk/sql12/plugins/graph/src/main/resources/net/sourceforge/squirrel_sql/plugins/graph/images/hidedock.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/sql12/plugins/graph/src/main/resources/net/sourceforge/squirrel_sql/plugins/graph/images/hidedock_sel.png =================================================================== (Binary files differ) Property changes on: trunk/sql12/plugins/graph/src/main/resources/net/sourceforge/squirrel_sql/plugins/graph/images/hidedock_sel.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: trunk/sql12/plugins/sqlparam/src/main/java/net/sourceforge/squirrel_sql/plugins/sqlparam/SQLParamExecutionListener.java =================================================================== --- trunk/sql12/plugins/sqlparam/src/main/java/net/sourceforge/squirrel_sql/plugins/sqlparam/SQLParamExecutionListener.java 2011-03-19 22:30:23 UTC (rev 6203) +++ trunk/sql12/plugins/sqlparam/src/main/java/net/sourceforge/squirrel_sql/plugins/sqlparam/SQLParamExecutionListener.java 2011-03-21 22:57:54 UTC (rev 6204) @@ -21,6 +21,7 @@ import net.sourceforge.squirrel_sql.client.gui.desktopcontainer.DialogWidget; import net.sourceforge.squirrel_sql.client.session.ISession; import net.sourceforge.squirrel_sql.client.session.event.ISQLExecutionListener; +import net.sourceforge.squirrel_sql.client.session.event.SQLExecutionAdapter; import net.sourceforge.squirrel_sql.fw.gui.GUIUtils; import net.sourceforge.squirrel_sql.fw.util.log.ILogger; import net.sourceforge.squirrel_sql.fw.util.log.LoggerController; @@ -39,7 +40,8 @@ * * @author Thorsten Mürell */ -public class SQLParamExecutionListener implements ISQLExecutionListener { +public class SQLParamExecutionListener extends SQLExecutionAdapter +{ private final static ILogger log = LoggerController.createLogger(SQLParamPlugin.class); private ISession session = null; Modified: trunk/sql12/plugins/sqlreplace/src/main/java/net/sourceforge/squirrel_sql/plugins/sqlreplace/SQLReplaceExecutionListener.java =================================================================== --- trunk/sql12/plugins/sqlreplace/src/main/java/net/sourceforge/squirrel_sql/plugins/sqlreplace/SQLReplaceExecutionListener.java 2011-03-19 22:30:23 UTC (rev 6203) +++ trunk/sql12/plugins/sqlreplace/src/main/java/net/sourceforge/squirrel_sql/plugins/sqlreplace/SQLReplaceExecutionListener.java 2011-03-21 22:57:54 UTC (rev 6204) @@ -21,6 +21,7 @@ import net.sourceforge.squirrel_sql.client.gui.desktopcontainer.SelectWidgetCommand; import net.sourceforge.squirrel_sql.client.session.ISession; import net.sourceforge.squirrel_sql.client.session.event.ISQLExecutionListener; +import net.sourceforge.squirrel_sql.client.session.event.SQLExecutionAdapter; import net.sourceforge.squirrel_sql.fw.gui.GUIUtils; import net.sourceforge.squirrel_sql.fw.util.log.ILogger; import net.sourceforge.squirrel_sql.fw.util.log.LoggerController; @@ -29,7 +30,8 @@ * @author Dieter * */ -public class SQLReplaceExecutionListener implements ISQLExecutionListener { +public class SQLReplaceExecutionListener extends SQLExecutionAdapter +{ private final static ILogger log = LoggerController.createLogger(SQLReplacePlugin.class); private ISession session = null; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <man...@us...> - 2011-03-23 00:47:08
|
Revision: 6205 http://squirrel-sql.svn.sourceforge.net/squirrel-sql/?rev=6205&view=rev Author: manningr Date: 2011-03-23 00:46:58 +0000 (Wed, 23 Mar 2011) Log Message: ----------- Replaced direct java.io.File construction with FileWrapper (FileWrapperImpl), which is a framework that allows tests to control where files are created and/or control whether or not a file is created at all, or just in memory for the life of the test. Modified Paths: -------------- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/ApplicationArguments.java trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/gui/HelpViewerWindow.java trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/plugin/DefaultPlugin.java trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/plugin/IPlugin.java trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/plugin/PluginQueryTokenizerPreferencesManager.java trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/plugin/PreferenceUtil.java trunk/sql12/app/src/test/java/net/sourceforge/squirrel_sql/client/plugin/AbstractPluginTest.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/util/FileWrapper.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/util/FileWrapperFactory.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/util/FileWrapperFactoryImpl.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/util/FileWrapperImpl.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/util/IOUtilities.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/util/IOUtilitiesImpl.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/xml/XMLBeanReader.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/xml/XMLBeanWriter.java trunk/sql12/plugins/codecompletion/src/main/java/net/sourceforge/squirrel_sql/plugins/codecompletion/CodeCompletionPlugin.java trunk/sql12/plugins/dataimport/src/main/java/net/sourceforge/squirrel_sql/plugins/dataimport/prefs/PreferencesManager.java trunk/sql12/plugins/dbcopy/src/main/java/net/sourceforge/squirrel_sql/plugins/dbcopy/prefs/PreferencesManager.java trunk/sql12/plugins/dbcopy/src/test/java/net/sourceforge/squirrel_sql/plugins/dbcopy/ColTypeMapperTest.java trunk/sql12/plugins/dbdiff/src/main/java/net/sourceforge/squirrel_sql/plugins/dbdiff/prefs/DefaultPluginPreferencesManager.java trunk/sql12/plugins/exportconfig/src/main/java/net/sourceforge/squirrel_sql/plugins/exportconfig/ExportConfigPlugin.java trunk/sql12/plugins/favs/src/main/java/net/sourceforge/squirrel_sql/plugins/favs/FoldersCache.java trunk/sql12/plugins/firebirdmanager/src/main/java/net/sourceforge/squirrel_sql/plugins/firebirdmanager/pref/PreferencesManager.java trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/xmlbeans/GraphXmlSerializer.java trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/configuration/HibernateConfigController.java trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/util/HibernateUtil.java trunk/sql12/plugins/laf/src/main/java/net/sourceforge/squirrel_sql/plugins/laf/LAFPlugin.java trunk/sql12/plugins/laf/src/main/java/net/sourceforge/squirrel_sql/plugins/laf/LAFRegister.java trunk/sql12/plugins/laf/src/main/java/net/sourceforge/squirrel_sql/plugins/laf/SkinLookAndFeelController.java trunk/sql12/plugins/mssql/src/main/java/net/sourceforge/squirrel_sql/plugins/mssql/MssqlPlugin.java trunk/sql12/plugins/mssql/src/main/java/net/sourceforge/squirrel_sql/plugins/mssql/prefs/PreferencesManager.java trunk/sql12/plugins/refactoring/src/main/java/net/sourceforge/squirrel_sql/plugins/refactoring/prefs/RefactoringPreferencesManager.java trunk/sql12/plugins/sessionscript/src/main/java/net/sourceforge/squirrel_sql/plugins/sessionscript/SessionScriptPlugin.java trunk/sql12/plugins/sqlbookmark/src/main/java/net/sourceforge/squirrel_sql/plugins/sqlbookmark/BookmarkManager.java trunk/sql12/plugins/sqlbookmark/src/main/java/net/sourceforge/squirrel_sql/plugins/sqlbookmark/SQLBookmarkPlugin.java trunk/sql12/plugins/sqlreplace/src/main/java/net/sourceforge/squirrel_sql/plugins/sqlreplace/ReplacementManager.java trunk/sql12/plugins/sqlreplace/src/main/java/net/sourceforge/squirrel_sql/plugins/sqlreplace/SQLReplacePlugin.java trunk/sql12/plugins/sqlreplace/src/test/java/net/sourceforge/squirrel_sql/plugins/sqlreplace/ReplacementManagerTest.java trunk/sql12/plugins/sqlscript/src/main/java/net/sourceforge/squirrel_sql/plugins/sqlscript/prefs/SQLScriptPreferencesManager.java trunk/sql12/plugins/sqlval/src/main/java/net/sourceforge/squirrel_sql/plugins/sqlval/SQLValidatorPlugin.java trunk/sql12/plugins/syntax/src/main/java/net/sourceforge/squirrel_sql/plugins/syntax/AutoCorrectProviderImpl.java trunk/sql12/plugins/syntax/src/main/java/net/sourceforge/squirrel_sql/plugins/syntax/SyntaxPlugin.java Added Paths: ----------- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/IApplicationArguments.java Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/ApplicationArguments.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/ApplicationArguments.java 2011-03-21 22:57:54 UTC (rev 6204) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/ApplicationArguments.java 2011-03-23 00:46:58 UTC (rev 6205) @@ -41,7 +41,7 @@ * * @author <A HREF="mailto:co...@us...">Colin Bell</A> */ -public class ApplicationArguments +public class ApplicationArguments implements IApplicationArguments { /** * Option descriptions. @@ -201,8 +201,7 @@ } /** - * @return override for the user settings directory. Will be - * <TT>null</TT> if not overridden. + * @see net.sourceforge.squirrel_sql.client.IApplicationArguments#getSquirrelHomeDirectory() */ public String getSquirrelHomeDirectory() { @@ -210,7 +209,7 @@ } /** - * @return The name of the directory that Squirrel is installed into. + * @see net.sourceforge.squirrel_sql.client.IApplicationArguments#getUserSettingsDirectoryOverride() */ public String getUserSettingsDirectoryOverride() { @@ -218,7 +217,7 @@ } /** - * @return <TT>true</TT> if splashscreen should be shown. + * @see net.sourceforge.squirrel_sql.client.IApplicationArguments#getShowSplashScreen() */ public boolean getShowSplashScreen() { @@ -226,8 +225,7 @@ } /** - * @return <TT>true</TT> if help information should be written to - * standard output. + * @see net.sourceforge.squirrel_sql.client.IApplicationArguments#getShowHelp() */ public boolean getShowHelp() { @@ -235,8 +233,7 @@ } /** - * @return the logging configuration file name. Will be - * <TT>null</TT> if not passed. + * @see net.sourceforge.squirrel_sql.client.IApplicationArguments#getLoggingConfigFileName() */ public String getLoggingConfigFileName() { @@ -244,7 +241,7 @@ } /** - * @return <TT>true</TT> if the plugins should be loaded. + * @see net.sourceforge.squirrel_sql.client.IApplicationArguments#getLoadPlugins() */ public boolean getLoadPlugins() { @@ -252,8 +249,7 @@ } /** - * @return <TT>true</TT> if the default metal theme should be used - * rather than the SQuirreL metal theme. + * @see net.sourceforge.squirrel_sql.client.IApplicationArguments#useDefaultMetalTheme() */ public boolean useDefaultMetalTheme() { @@ -261,9 +257,7 @@ } /** - * Retrieve whether to use the native Look and Feel. - * - * @return <TT>true</TT> to use the native LAF. + * @see net.sourceforge.squirrel_sql.client.IApplicationArguments#useNativeLAF() */ public boolean useNativeLAF() { @@ -271,7 +265,7 @@ } /** - * @return The raw arguments passed on the command line. + * @see net.sourceforge.squirrel_sql.client.IApplicationArguments#getRawArguments() */ public String[] getRawArguments() { @@ -279,12 +273,15 @@ } /** - * @return a boolean indicating whether or not to enable user interface debugging mode + * @see net.sourceforge.squirrel_sql.client.IApplicationArguments#getUserInterfaceDebugEnabled() */ public boolean getUserInterfaceDebugEnabled() { return _cmdLine.hasOption(IOptions.UI_DEBUG[0]); } + /** + * @see net.sourceforge.squirrel_sql.client.IApplicationArguments#getPluginList() + */ public List<String> getPluginList() { return _pluginList; } Added: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/IApplicationArguments.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/IApplicationArguments.java (rev 0) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/IApplicationArguments.java 2011-03-23 00:46:58 UTC (rev 6205) @@ -0,0 +1,88 @@ +package net.sourceforge.squirrel_sql.client; + +import java.util.List; + +/* + * Copyright (C) 2011 Rob Manning + * man...@us... + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +public interface IApplicationArguments +{ + + /** + * @return override for the user settings directory. Will be + * <TT>null</TT> if not overridden. + */ + String getSquirrelHomeDirectory(); + + /** + * @return The name of the directory that Squirrel is installed into. + */ + String getUserSettingsDirectoryOverride(); + + /** + * @return <TT>true</TT> if splashscreen should be shown. + */ + boolean getShowSplashScreen(); + + /** + * @return <TT>true</TT> if help information should be written to + * standard output. + */ + boolean getShowHelp(); + + /** + * @return the logging configuration file name. Will be + * <TT>null</TT> if not passed. + */ + String getLoggingConfigFileName(); + + /** + * @return <TT>true</TT> if the plugins should be loaded. + */ + boolean getLoadPlugins(); + + /** + * @return <TT>true</TT> if the default metal theme should be used + * rather than the SQuirreL metal theme. + */ + boolean useDefaultMetalTheme(); + + /** + * Retrieve whether to use the native Look and Feel. + * + * @return <TT>true</TT> to use the native LAF. + */ + boolean useNativeLAF(); + + /** + * @return The raw arguments passed on the command line. + */ + String[] getRawArguments(); + + /** + * @return a boolean indicating whether or not to enable user interface debugging mode + */ + boolean getUserInterfaceDebugEnabled(); + + /** + * @return + */ + List<String> getPluginList(); + +} \ No newline at end of file Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/gui/HelpViewerWindow.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/gui/HelpViewerWindow.java 2011-03-21 22:57:54 UTC (rev 6204) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/gui/HelpViewerWindow.java 2011-03-23 00:46:58 UTC (rev 6205) @@ -1,4 +1,5 @@ package net.sourceforge.squirrel_sql.client.gui; + /* * Copyright (C) 2003-2004 Colin Bell * co...@us... @@ -21,8 +22,6 @@ import java.awt.Container; import java.awt.Dimension; import java.awt.Font; -import java.io.File; -import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.net.MalformedURLException; @@ -47,30 +46,34 @@ import javax.swing.tree.MutableTreeNode; import javax.swing.tree.TreePath; +import net.sourceforge.squirrel_sql.client.IApplication; +import net.sourceforge.squirrel_sql.client.plugin.PluginInfo; +import net.sourceforge.squirrel_sql.client.resources.SquirrelResources; +import net.sourceforge.squirrel_sql.client.util.ApplicationFileWrappers; +import net.sourceforge.squirrel_sql.client.util.ApplicationFileWrappersImpl; import net.sourceforge.squirrel_sql.fw.gui.StatusBar; import net.sourceforge.squirrel_sql.fw.util.BaseException; +import net.sourceforge.squirrel_sql.fw.util.FileWrapper; +import net.sourceforge.squirrel_sql.fw.util.FileWrapperFactory; +import net.sourceforge.squirrel_sql.fw.util.FileWrapperFactoryImpl; import net.sourceforge.squirrel_sql.fw.util.StringManager; import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory; import net.sourceforge.squirrel_sql.fw.util.StringUtilities; +import net.sourceforge.squirrel_sql.fw.util.Utilities; import net.sourceforge.squirrel_sql.fw.util.log.ILogger; import net.sourceforge.squirrel_sql.fw.util.log.LoggerController; -import net.sourceforge.squirrel_sql.client.IApplication; -import net.sourceforge.squirrel_sql.client.plugin.PluginInfo; -import net.sourceforge.squirrel_sql.client.resources.SquirrelResources; -import net.sourceforge.squirrel_sql.client.util.ApplicationFiles; /** * This window shows the SQuirreL Help files. - * + * * @author <A HREF="mailto:co...@us...">Colin Bell</A> */ public class HelpViewerWindow extends JFrame { - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 1L; - /** Logger for this class. */ - private final static ILogger s_log = - LoggerController.createLogger(HelpViewerWindow.class); + /** Logger for this class. */ + private final static ILogger s_log = LoggerController.createLogger(HelpViewerWindow.class); /** Internationalized strings for this class. */ private static final StringManager s_stringMgr = @@ -94,18 +97,23 @@ /** Collection of the nodes in the tree keyed by the URL.toString(). */ private final Map<String, DefaultMutableTreeNode> _nodes = new HashMap<String, DefaultMutableTreeNode>(); + /** factory for creating FileWrappers which insulate the application from direct reference to File */ + private FileWrapperFactory fileWrapperFactory = new FileWrapperFactoryImpl(); + + /** A FileWrapper-enhanced version of ApplicationFiles that removes direct references to File */ + private ApplicationFileWrappers applicationFiles = new ApplicationFileWrappersImpl(); + /** * Ctor. - * - * @param app Application API. - * - * @throws IllegalArgumentException - * Thrown if <TT>null</TT> <TT>IApplication</TT> passed. + * + * @param app + * Application API. + * @throws IllegalArgumentException + * Thrown if <TT>null</TT> <TT>IApplication</TT> passed. */ - public HelpViewerWindow(IApplication app) - throws IllegalArgumentException, BaseException + public HelpViewerWindow(IApplication app) throws IllegalArgumentException, BaseException { - // i18n[HelpViewerWindow.title=SQuirreL SQL Client Help] + // i18n[HelpViewerWindow.title=SQuirreL SQL Client Help] super(s_stringMgr.getString("HelpViewerWindow.title")); if (app == null) { @@ -123,21 +131,42 @@ } /** + * @param fileWrapperFactory + * the fileWrapperFactory to set + */ + public void setFileWrapperFactory(FileWrapperFactory fileWrapperFactory) + { + Utilities.checkNull("setFileWrapperFactory", "fileWrapperFactory", fileWrapperFactory); + this.fileWrapperFactory = fileWrapperFactory; + } + + /** + * @param applicationFiles the applicationFiles to set + */ + public void setApplicationFiles(ApplicationFileWrappers applicationFiles) + { + Utilities.checkNull("setApplicationFiles", "applicationFiles", applicationFiles); + this.applicationFiles = applicationFiles; + } + + + /** * Set the Document displayed to that defined by the passed URL. - * - * @param url URL of document to be displayed. + * + * @param url + * URL of document to be displayed. */ private void setSelectedDocument(URL url) { try { _detailPnl.gotoURL(url); - // i18n[HelpViewerWindow.pageloaded=Page loaded.] + // i18n[HelpViewerWindow.pageloaded=Page loaded.] _statusBar.setText(s_stringMgr.getString("HelpViewerWindow.pageloaded")); } catch (IOException ex) { - // i18n[HelpViewerWindow.error.displaydocument=Error displaying document] + // i18n[HelpViewerWindow.error.displaydocument=Error displaying document] s_log.error(s_stringMgr.getString("HelpViewerWindow.error.displaydocument"), ex); _statusBar.setText(ex.toString()); } @@ -148,14 +177,14 @@ // Strip local part of URL. String key = url.toString(); final int idx = key.lastIndexOf('#'); - if ( idx > -1) + if (idx > -1) { key = key.substring(0, idx); } DefaultMutableTreeNode node = _nodes.get(key); if (node != null) // && node != _tree.getLastSelectedPathComponent()) { - DefaultTreeModel model = (DefaultTreeModel)_tree.getModel(); + DefaultTreeModel model = (DefaultTreeModel) _tree.getModel(); TreePath path = new TreePath(model.getPathToRoot(node)); if (path != null) { @@ -205,15 +234,15 @@ { _detailPnl.setHomeURL(_homeURL); _tree.expandRow(0); - _tree.expandRow(2); - if (_app.getSquirrelPreferences().isFirstRun()) - { - _tree.setSelectionRow(1); - } - else - { - _tree.setSelectionRow(3); - } + _tree.expandRow(2); + if (_app.getSquirrelPreferences().isFirstRun()) + { + _tree.setSelectionRow(1); + } + else + { + _tree.setSelectionRow(3); + } _tree.setRootVisible(false); } }); @@ -224,6 +253,7 @@ { selectTreeNodeForURL(evt.getHtmlViewerPanel().getURL()); } + public void homeURLHasChanged(HtmlViewerPanelListenerEvent evt) { // Nothing to do. @@ -233,13 +263,13 @@ /** * Create a tree each node being a link to a document. - * - * @return The contents tree. + * + * @return The contents tree. */ private JScrollPane createContentsTree() throws IOException { - final ApplicationFiles appFiles = new ApplicationFiles(); - // i18n[HelpViewerWindow.help=Help] + + // i18n[HelpViewerWindow.help=Help] final FolderNode root = new FolderNode(s_stringMgr.getString("HelpViewerWindow.help")); _tree = new JTree(new DefaultTreeModel(root)); _tree.setShowsRootHandles(true); @@ -253,43 +283,41 @@ renderer.setClosedIcon(rsrc.getIcon(SquirrelResources.IImageNames.HELP_TOC_CLOSED)); _tree.setCellRenderer(renderer); - // First put the Welcome to SQuirreL node. - File file = appFiles.getWelcomeFile(); - try - { - // i18n[HelpViewerWindow.welcome=Welcome] - DocumentNode dn = new DocumentNode(s_stringMgr.getString("HelpViewerWindow.welcome"), file); - root.add(dn); - _nodes.put(dn.getURL().toString(), dn); - } - catch (MalformedURLException ex) - { - // i18n[HelpViewerWindow.error.loadwelcomefile=Error retrieving Welcome file URL for {0}] - String msg = - s_stringMgr.getString("HelpViewerWindow.error.loadwelcomefile", - file.getAbsolutePath()); - s_log.error(msg, ex); - } + // First put the Welcome to SQuirreL node. + FileWrapper file = applicationFiles.getWelcomeFile(); + try + { + // i18n[HelpViewerWindow.welcome=Welcome] + DocumentNode dn = new DocumentNode(s_stringMgr.getString("HelpViewerWindow.welcome"), file); + root.add(dn); + _nodes.put(dn.getURL().toString(), dn); + } + catch (MalformedURLException ex) + { + // i18n[HelpViewerWindow.error.loadwelcomefile=Error retrieving Welcome file URL for {0}] + String msg = s_stringMgr.getString("HelpViewerWindow.error.loadwelcomefile", file.getAbsolutePath()); + s_log.error(msg, ex); + } // Add Help, Licence and Change Log nodes to the tree. - // i18n[HelpViewerWindow.help=Help] + // i18n[HelpViewerWindow.help=Help] final FolderNode helpRoot = new FolderNode(s_stringMgr.getString("HelpViewerWindow.help")); root.add(helpRoot); _nodes.put(helpRoot.getURL().toString(), helpRoot); - // i18n[HelpViewerWindow.licences=Licences] + // i18n[HelpViewerWindow.licences=Licences] final FolderNode licenceRoot = new FolderNode(s_stringMgr.getString("HelpViewerWindow.licences")); root.add(licenceRoot); _nodes.put(licenceRoot.getURL().toString(), licenceRoot); - // i18n[HelpViewerWindow.changelogs=Change Logs] + // i18n[HelpViewerWindow.changelogs=Change Logs] final FolderNode changeLogRoot = new FolderNode(s_stringMgr.getString("HelpViewerWindow.changelogs")); root.add(changeLogRoot); _nodes.put(changeLogRoot.getURL().toString(), changeLogRoot); // Add SQuirreL help to the Help node. - file = appFiles.getQuickStartGuideFile(); + file = applicationFiles.getQuickStartGuideFile(); try { - // i18n[HelpViewerWindow.squirrel=SQuirreL] + // i18n[HelpViewerWindow.squirrel=SQuirreL] DocumentNode dn = new DocumentNode(s_stringMgr.getString("HelpViewerWindow.squirrel"), file); helpRoot.add(dn); _homeURL = dn.getURL(); @@ -297,46 +325,41 @@ } catch (MalformedURLException ex) { - // i18n[HelpViewerWindow.error.loadwelcomefile=Error retrieving Help file URL for {0}] - String msg = - s_stringMgr.getString("HelpViewerWindow.error.loadhelpfile", - file.getAbsolutePath()); + // i18n[HelpViewerWindow.error.loadwelcomefile=Error retrieving Help file URL for {0}] + String msg = s_stringMgr.getString("HelpViewerWindow.error.loadhelpfile", file.getAbsolutePath()); s_log.error(msg, ex); } // Add SQuirreL Licence to the Licence node. - file = appFiles.getLicenceFile(); + file = applicationFiles.getLicenceFile(); try { - // i18n[HelpViewerWindow.squirrel=SQuirreL] + // i18n[HelpViewerWindow.squirrel=SQuirreL] DocumentNode dn = new DocumentNode(s_stringMgr.getString("HelpViewerWindow.squirrel"), file); licenceRoot.add(dn); _nodes.put(dn.getURL().toString(), dn); } catch (MalformedURLException ex) { - // i18n[HelpViewerWindow.error.loadlicencefile=Error retrieving Licence file URL for {0}] - String msg = - s_stringMgr.getString("HelpViewerWindow.error.loadlicencefile", - file.getAbsolutePath()); + // i18n[HelpViewerWindow.error.loadlicencefile=Error retrieving Licence file URL for {0}] + String msg = s_stringMgr.getString("HelpViewerWindow.error.loadlicencefile", file.getAbsolutePath()); s_log.error(msg, ex); } // Add SQuirreL Change Log to the Licence node. - file = appFiles.getChangeLogFile(); + file = applicationFiles.getChangeLogFile(); try { - // i18n[HelpViewerWindow.squirrel=SQuirreL] + // i18n[HelpViewerWindow.squirrel=SQuirreL] DocumentNode dn = new DocumentNode(s_stringMgr.getString("HelpViewerWindow.squirrel"), file); changeLogRoot.add(dn); _nodes.put(dn.getURL().toString(), dn); } catch (MalformedURLException ex) { - // i18n[HelpViewerWindow.error.loadchangelogfile=Error retrieving Change Log file URL for {0}] - String msg = - s_stringMgr.getString("HelpViewerWindow.error.loadchangelogfile", - file.getAbsolutePath()); + // i18n[HelpViewerWindow.error.loadchangelogfile=Error retrieving Change Log file URL for {0}] + String msg = + s_stringMgr.getString("HelpViewerWindow.error.loadchangelogfile", file.getAbsolutePath()); s_log.error(msg, ex); } @@ -346,7 +369,7 @@ { try { - final File dir = pi[i].getPlugin().getPluginAppSettingsFolder(); + final FileWrapper dir = pi[i].getPlugin().getPluginAppSettingsFolder(); final String title = pi[i].getDescriptiveName(); // Help document. @@ -355,17 +378,16 @@ final String fn = pi[i].getHelpFileName(); if (fn != null && fn.length() > 0) { - DocumentNode dn = new DocumentNode(title, new File(dir, fn)); + DocumentNode dn = new DocumentNode(title, fileWrapperFactory.create(dir, fn)); helpRoot.add(dn); _nodes.put(dn.getURL().toString(), dn); } } catch (IOException ex) { - // i18n[HelpViewerWindow.error.loadpluginhelp=Error generating Help entry for plugin {0}] - String msg = - s_stringMgr.getString("HelpViewerWindow.error.loadpluginhelp", - pi[i].getDescriptiveName()); + // i18n[HelpViewerWindow.error.loadpluginhelp=Error generating Help entry for plugin {0}] + String msg = + s_stringMgr.getString("HelpViewerWindow.error.loadpluginhelp", pi[i].getDescriptiveName()); s_log.error(msg, ex); } @@ -375,17 +397,17 @@ final String fn = pi[i].getLicenceFileName(); if (fn != null && fn.length() > 0) { - DocumentNode dn = new DocumentNode(title, new File(dir, fn)); + DocumentNode dn = new DocumentNode(title, fileWrapperFactory.create(dir, fn)); licenceRoot.add(dn); _nodes.put(dn.getURL().toString(), dn); } } catch (IOException ex) { - // i18n[HelpViewerWindow.error.loadpluginlicence=Error generating Licence entry for plugin {0}] - String msg = - s_stringMgr.getString("HelpViewerWindow.error.loadpluginlicence", - pi[i].getDescriptiveName()); + // i18n[HelpViewerWindow.error.loadpluginlicence=Error generating Licence entry for plugin {0}] + String msg = + s_stringMgr.getString("HelpViewerWindow.error.loadpluginlicence", + pi[i].getDescriptiveName()); s_log.error(msg, ex); } @@ -395,45 +417,42 @@ final String fn = pi[i].getChangeLogFileName(); if (fn != null && fn.length() > 0) { - DocumentNode dn = new DocumentNode(title, new File(dir, fn)); + DocumentNode dn = new DocumentNode(title, fileWrapperFactory.create(dir, fn)); changeLogRoot.add(dn); _nodes.put(dn.getURL().toString(), dn); } } catch (IOException ex) { - // i18n[HelpViewerWindow.error.loadchangelog=Error generating Change Log entry for plugin {0}] - String msg = - s_stringMgr.getString("HelpViewerWindow.error.loadchangelog", - pi[i].getDescriptiveName()); + // i18n[HelpViewerWindow.error.loadchangelog=Error generating Change Log entry for plugin {0}] + String msg = + s_stringMgr.getString("HelpViewerWindow.error.loadchangelog", pi[i].getDescriptiveName()); s_log.error(msg, ex); } } catch (IOException ex) { - // i18n[HelpViewerWindow.error.loadpluginsettings=Error retrieving app settings folder for plugin {0}] - String msg = - s_stringMgr.getString("HelpViewerWindow.error.loadpluginsettings", - pi[i].getDescriptiveName()); + // i18n[HelpViewerWindow.error.loadpluginsettings=Error retrieving app settings folder for plugin + // {0}] + String msg = + s_stringMgr.getString("HelpViewerWindow.error.loadpluginsettings", pi[i].getDescriptiveName()); s_log.error(msg, ex); } } // FAQ. - file = appFiles.getFAQFile(); + file = applicationFiles.getFAQFile(); try { - // i18n[HelpViewerWindow.faq=FAQ] + // i18n[HelpViewerWindow.faq=FAQ] DocumentNode dn = new DocumentNode(s_stringMgr.getString("HelpViewerWindow.faq"), file); root.add(dn); _nodes.put(dn.getURL().toString(), dn); } catch (MalformedURLException ex) { - // i18n[HelpViewerWindow.error.loadfaqfile=Error retrieving FAQ from URL = {0}] - String msg = - s_stringMgr.getString("HelpViewerWindow.error.loadfaqfile", - file.getAbsolutePath()); + // i18n[HelpViewerWindow.error.loadfaqfile=Error retrieving FAQ from URL = {0}] + String msg = s_stringMgr.getString("HelpViewerWindow.error.loadfaqfile", file.getAbsolutePath()); s_log.error(msg, ex); } @@ -454,14 +473,13 @@ return _detailPnl; } - private class DocumentNode extends DefaultMutableTreeNode { - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 1L; - private URL _url; + private URL _url; - DocumentNode(String title, File file) throws MalformedURLException + DocumentNode(String title, FileWrapper file) throws MalformedURLException { super(title, false); setFile(file); @@ -477,7 +495,7 @@ return _url; } - void setFile(File file) throws MalformedURLException + void setFile(FileWrapper file) throws MalformedURLException { _url = file.toURI().toURL(); } @@ -485,15 +503,18 @@ private class FolderNode extends DocumentNode { - private static final long serialVersionUID = 1L; - private final List<String> _docTitles = new ArrayList<String>(); + private static final long serialVersionUID = 1L; + + private final List<String> _docTitles = new ArrayList<String>(); + private final List<URL> _docURLs = new ArrayList<URL>(); - private final File _contentsFile; + private final FileWrapper _contentsFile; + FolderNode(String title) throws IOException { super(title, true); - _contentsFile = File.createTempFile("sqschelp", "html"); + _contentsFile = fileWrapperFactory.createTempFile("sqschelp", "html"); _contentsFile.deleteOnExit(); setFile(_contentsFile); } @@ -503,7 +524,7 @@ super.add(node); if (node instanceof DocumentNode) { - final DocumentNode dn = (DocumentNode)node; + final DocumentNode dn = (DocumentNode) node; final URL docURL = dn.getURL(); if (docURL != null) { @@ -522,24 +543,19 @@ { try { - final PrintWriter pw = new PrintWriter(new FileWriter(_contentsFile)); + final PrintWriter pw = new PrintWriter(_contentsFile.getFileWriter()); try { StringBuffer buf = new StringBuffer(50); - buf.append("<HTML><BODY><H1>") - .append(toString()) - .append("</H1>"); + buf.append("<HTML><BODY><H1>").append(toString()).append("</H1>"); pw.println(buf.toString()); for (int i = 0, limit = _docTitles.size(); i < limit; ++i) { -// final String docTitle = (String)_docTitles.get(i); + // final String docTitle = (String)_docTitles.get(i); final URL docUrl = _docURLs.get(i); buf = new StringBuffer(50); - buf.append("<A HREF=\"") - .append(docUrl) - .append("\">") - .append(_docTitles.get(i)) - .append("</A><BR>"); + buf.append("<A HREF=\"").append(docUrl).append("\">").append(_docTitles.get(i)).append( + "</A><BR>"); pw.println(buf.toString()); } pw.println("</BODY></HTML"); @@ -551,7 +567,7 @@ } catch (IOException ex) { - // i18n[HelpViewerWindow.error.congen=Error generating Contents file] + // i18n[HelpViewerWindow.error.congen=Error generating Contents file] String msg = s_stringMgr.getString("HelpViewerWindow.error.congen"); s_log.error(msg, ex); _statusBar.setText(msg); @@ -560,11 +576,10 @@ } /** - * This class listens for changes in the node selected in the tree - * and displays the appropriate help document for the node. + * This class listens for changes in the node selected in the tree and displays the appropriate help + * document for the node. */ - private final class ObjectTreeSelectionListener - implements TreeSelectionListener + private final class ObjectTreeSelectionListener implements TreeSelectionListener { public void valueChanged(TreeSelectionEvent evt) { @@ -574,7 +589,7 @@ Object lastComp = path.getLastPathComponent(); if (lastComp instanceof DocumentNode) { - setSelectedDocument(((DocumentNode)lastComp).getURL()); + setSelectedDocument(((DocumentNode) lastComp).getURL()); } } } Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/plugin/DefaultPlugin.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/plugin/DefaultPlugin.java 2011-03-21 22:57:54 UTC (rev 6204) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/plugin/DefaultPlugin.java 2011-03-23 00:46:58 UTC (rev 6205) @@ -17,6 +17,7 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + import java.io.File; import java.io.IOException; @@ -26,9 +27,15 @@ import net.sourceforge.squirrel_sql.client.gui.db.SQLAlias; import net.sourceforge.squirrel_sql.client.preferences.IGlobalPreferencesPanel; import net.sourceforge.squirrel_sql.client.preferences.INewSessionPropertiesPanel; +import net.sourceforge.squirrel_sql.client.util.ApplicationFileWrappers; +import net.sourceforge.squirrel_sql.client.util.ApplicationFileWrappersImpl; import net.sourceforge.squirrel_sql.client.util.ApplicationFiles; +import net.sourceforge.squirrel_sql.fw.util.FileWrapper; +import net.sourceforge.squirrel_sql.fw.util.FileWrapperFactory; +import net.sourceforge.squirrel_sql.fw.util.FileWrapperFactoryImpl; import net.sourceforge.squirrel_sql.fw.util.StringManager; import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory; +import net.sourceforge.squirrel_sql.fw.util.Utilities; public abstract class DefaultPlugin implements IPlugin { @@ -39,6 +46,12 @@ /** Current application API. */ protected IApplication _app; + /** A FileWrapper-enhanced version of ApplicationFiles that removes direct references to File */ + protected ApplicationFileWrappers applicationFiles = new ApplicationFileWrappersImpl(); + + /** factory for creating FileWrappers which insulate the application from direct reference to File */ + protected FileWrapperFactory fileWrapperFactory = new FileWrapperFactoryImpl(); + /** * Called on application startup before application started up. * @@ -143,7 +156,7 @@ * * @return The current application API. */ - public final IApplication getApplication() + public IApplication getApplication() { return _app; } @@ -164,12 +177,12 @@ * @throws IOException * An error occured retrieving/creating the folder. */ - public synchronized File getPluginAppSettingsFolder() + public synchronized FileWrapper getPluginAppSettingsFolder() throws IllegalStateException, IOException { String pluginAppFolderProp = System.getProperty("pluginAppFolder"); if (pluginAppFolderProp != null) { - return new File(pluginAppFolderProp); + return fileWrapperFactory.create(pluginAppFolderProp); } final String internalName = getInternalName(); @@ -177,8 +190,8 @@ { throw new IllegalStateException("IPlugin doesn't have a valid internal name"); } - final File pluginDir = new ApplicationFiles().getPluginsDirectory(); - final File file = new File(pluginDir, internalName); + final FileWrapper pluginDir = applicationFiles.getPluginsDirectory(); + final FileWrapper file = fileWrapperFactory.create(pluginDir, internalName); if (!file.exists()) { file.mkdirs(); @@ -197,12 +210,12 @@ */ public synchronized String getPluginJarFilePath() throws IllegalStateException { final String internalName = getInternalName(); - final File pluginDir = new ApplicationFiles().getPluginsDirectory(); + final FileWrapper pluginDir = applicationFiles.getPluginsDirectory(); if (internalName == null || internalName.trim().length() == 0) { throw new IllegalStateException("IPlugin doesn't have a valid internal name"); } - final File resultFile = new File(pluginDir, internalName + ".jar"); + final FileWrapper resultFile = fileWrapperFactory.create(pluginDir, internalName + ".jar"); return resultFile.getAbsolutePath(); } @@ -221,8 +234,10 @@ * * @throws IOException * An error occured retrieving/creating the folder. + * + * @see net.sourceforge.squirrel_sql.client.plugin.IPlugin#getPluginUserSettingsFolder() */ - public synchronized File getPluginUserSettingsFolder() + public synchronized FileWrapper getPluginUserSettingsFolder() throws IllegalStateException, IOException { final String internalName = getInternalName(); @@ -235,7 +250,7 @@ + File.separator + internalName + File.separator; - File file = new File(name); + FileWrapper file = fileWrapperFactory.create(name); if (!file.exists()) { file.mkdirs(); @@ -293,6 +308,24 @@ { return null; } + + /** + * @param applicationFiles the applicationFiles to set + */ + public void setApplicationFiles(ApplicationFileWrappers applicationFiles) + { + Utilities.checkNull("setApplicationFiles", "applicationFiles", applicationFiles); + this.applicationFiles = applicationFiles; + } + + /** + * @param fileWrapperFactory the fileWrapperFactory to set + */ + public void setFileWrapperFactory(FileWrapperFactory fileWrapperFactory) + { + Utilities.checkNull("setFileWrapperFactory", "fileWrapperFactory", fileWrapperFactory); + this.fileWrapperFactory = fileWrapperFactory; + } } Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/plugin/IPlugin.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/plugin/IPlugin.java 2011-03-21 22:57:54 UTC (rev 6204) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/plugin/IPlugin.java 2011-03-23 00:46:58 UTC (rev 6205) @@ -17,7 +17,7 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -import java.io.File; + import java.io.IOException; import net.sourceforge.squirrel_sql.client.IApplication; @@ -25,6 +25,9 @@ import net.sourceforge.squirrel_sql.client.gui.db.aliasproperties.IAliasPropertiesPanelController; import net.sourceforge.squirrel_sql.client.preferences.IGlobalPreferencesPanel; import net.sourceforge.squirrel_sql.client.preferences.INewSessionPropertiesPanel; +import net.sourceforge.squirrel_sql.client.util.ApplicationFileWrappers; +import net.sourceforge.squirrel_sql.fw.util.FileWrapper; +import net.sourceforge.squirrel_sql.fw.util.FileWrapperFactory; /** * Base interface for all plugins. * <P> @@ -179,7 +182,7 @@ * @throws IOException * An error occured retrieving/creating the folder. */ - File getPluginAppSettingsFolder() throws IOException, IllegalStateException; + FileWrapper getPluginAppSettingsFolder() throws IOException, IllegalStateException; /** * Return the folder with the users home directory @@ -197,7 +200,7 @@ * @throws IOException * An error occured retrieving/creating the folder. */ - File getPluginUserSettingsFolder() throws IllegalStateException, IOException; + FileWrapper getPluginUserSettingsFolder() throws IllegalStateException, IOException; /** * Allows a plugin to provide services to other plugins. @@ -214,4 +217,15 @@ */ String getPluginJarFilePath() throws IllegalStateException; + /** + * @param applicationFiles the applicationFiles to set + */ + public void setApplicationFiles(ApplicationFileWrappers applicationFiles); + + /** + * @param fileWrapperFactory the fileWrapperFactory to set + */ + public void setFileWrapperFactory(FileWrapperFactory fileWrapperFactory); + + } Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/plugin/PluginQueryTokenizerPreferencesManager.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/plugin/PluginQueryTokenizerPreferencesManager.java 2011-03-21 22:57:54 UTC (rev 6204) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/plugin/PluginQueryTokenizerPreferencesManager.java 2011-03-23 00:46:58 UTC (rev 6205) @@ -18,152 +18,181 @@ */ package net.sourceforge.squirrel_sql.client.plugin; -import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.util.Iterator; import net.sourceforge.squirrel_sql.client.Version; -import net.sourceforge.squirrel_sql.client.plugin.IPlugin; -import net.sourceforge.squirrel_sql.client.plugin.PluginException; -import net.sourceforge.squirrel_sql.client.plugin.PreferenceUtil; import net.sourceforge.squirrel_sql.fw.preferences.IQueryTokenizerPreferenceBean; +import net.sourceforge.squirrel_sql.fw.util.FileWrapper; +import net.sourceforge.squirrel_sql.fw.util.FileWrapperFactory; +import net.sourceforge.squirrel_sql.fw.util.FileWrapperFactoryImpl; +import net.sourceforge.squirrel_sql.fw.util.Utilities; import net.sourceforge.squirrel_sql.fw.util.log.ILogger; import net.sourceforge.squirrel_sql.fw.util.log.LoggerController; import net.sourceforge.squirrel_sql.fw.xml.XMLBeanReader; import net.sourceforge.squirrel_sql.fw.xml.XMLBeanWriter; /** - * This is intended to be used by plugins that have custom IQueryTokenizers, - * which require some sort of preference management (loading/storing preference - * beans to XML file and vice-versa). In reality this functionality isn't - * specific to IQueryTokenizer preferences, so this could be further generalized. - * There is no need at the present time to do so. + * This is intended to be used by plugins that have custom IQueryTokenizers, which require some sort of + * preference management (loading/storing preference beans to XML file and vice-versa). In reality this + * functionality isn't specific to IQueryTokenizer preferences, so this could be further generalized. There is + * no need at the present time to do so. * * @author manningr */ -public class PluginQueryTokenizerPreferencesManager { +public class PluginQueryTokenizerPreferencesManager +{ - /** Logger for this class. */ - private final static ILogger s_log = - LoggerController.createLogger(PluginQueryTokenizerPreferencesManager.class); - - /** Name of preferences file. */ - private static final String USER_PREFS_FILE_NAME = "prefs.xml"; - - /** Folder to store user settings in. */ - private File _userSettingsFolder; - - /** The bean we will be loading from / storing to */ - private IQueryTokenizerPreferenceBean _prefs = null; - - /** Tells us which file to store the preference bean in */ - private IPlugin plugin = null; - - /** whether or not we've been initialized */ - private boolean _initialized = false; - - /** - * Constructor. - */ - public PluginQueryTokenizerPreferencesManager() { - /* Do Nothing */ - } - - /** - * Initializes this preference manager. This must be done prior to calling - * other methods. - * - * @param thePlugin which plugin we are handling preferences for. - * @param defaultPrefsBean the bean to use if no preference file currently - * exists. - * @throws PluginException - */ - public void initialize(IPlugin thePlugin, - IQueryTokenizerPreferenceBean defaultPrefsBean) - throws PluginException - { - if (thePlugin == null) { - throw new IllegalArgumentException( - "IPlugin arguement cannot be null"); - } - if (defaultPrefsBean == null) { - throw new IllegalArgumentException( - "IQueryTokenizerPreferenceBean arguement cannot be null"); - } - plugin = thePlugin; - - // Folder to store user settings. - try { - _userSettingsFolder = plugin.getPluginUserSettingsFolder(); - } catch (IOException ex) { - throw new PluginException(ex); - } - _prefs = defaultPrefsBean; - loadPrefs(); - _initialized = true; - } - - /** - * Returns the preferences bean that this class manages. - * - * @return an implementation instance of IQueryTokenizerPreferenceBean - */ - public IQueryTokenizerPreferenceBean getPreferences() { - if (!_initialized) { - throw new IllegalStateException("initialize() must be called first"); - } - return _prefs; - } - - /** - * Saves the preferences - */ - public void unload() { - savePrefs(); - } - - /** - * Save preferences to disk. - */ - public void savePrefs() { - if (!_initialized) { - throw new IllegalStateException("initialize() must be called first"); - } - try { - XMLBeanWriter wtr = new XMLBeanWriter(_prefs); - wtr.save(new File(_userSettingsFolder, USER_PREFS_FILE_NAME)); - } catch (Exception ex) { - s_log.error("Error occured writing to preferences file: " - + USER_PREFS_FILE_NAME, ex); - } - } + /** Logger for this class. */ + private final static ILogger s_log = + LoggerController.createLogger(PluginQueryTokenizerPreferencesManager.class); - /** - * Load from preferences file. - */ - private void loadPrefs() { - try { - XMLBeanReader doc = new XMLBeanReader(); - - File prefFile = PreferenceUtil.getPreferenceFileToReadFrom(plugin); - - doc.load(prefFile, _prefs.getClass().getClassLoader()); - - Iterator<Object> it = doc.iterator(); - - if (it.hasNext()) { - _prefs = (IQueryTokenizerPreferenceBean)it.next(); - } - } catch (FileNotFoundException ignore) { - s_log.info(USER_PREFS_FILE_NAME + " not found - will be created"); - } catch (Exception ex) { - s_log.error("Error occured reading from preferences file: " - + USER_PREFS_FILE_NAME, ex); - } + /** Name of preferences file. */ + private static final String USER_PREFS_FILE_NAME = "prefs.xml"; - _prefs.setClientName(Version.getApplicationName() + "/" + plugin.getDescriptiveName()); - _prefs.setClientVersion(Version.getShortVersion() + "/" + plugin.getVersion()); - } - + /** Folder to store user settings in. */ + private FileWrapper _userSettingsFolder; + + /** The bean we will be loading from / storing to */ + private IQueryTokenizerPreferenceBean _prefs = null; + + /** Tells us which file to store the preference bean in */ + private IPlugin plugin = null; + + /** whether or not we've been initialized */ + private boolean _initialized = false; + + /** factory for creating FileWrappers which insulate the application from direct reference to File */ + private static FileWrapperFactory fileWrapperFactory = new FileWrapperFactoryImpl(); + + /** + * Constructor. + */ + public PluginQueryTokenizerPreferencesManager() + { + /* Do Nothing */ + } + + /** + * Initializes this preference manager. This must be done prior to calling other methods. + * + * @param thePlugin + * which plugin we are handling preferences for. + * @param defaultPrefsBean + * the bean to use if no preference file currently exists. + * @throws PluginException + */ + public void initialize(IPlugin thePlugin, IQueryTokenizerPreferenceBean defaultPrefsBean) + throws PluginException + { + if (thePlugin == null) + { + throw new IllegalArgumentException("IPlugin arguement cannot be null"); + } + if (defaultPrefsBean == null) + { + throw new IllegalArgumentException("IQueryTokenizerPreferenceBean arguement cannot be null"); + } + plugin = thePlugin; + + // Folder to store user settings. + try + { + _userSettingsFolder = plugin.getPluginUserSettingsFolder(); + } + catch (IOException ex) + { + throw new PluginException(ex); + } + _prefs = defaultPrefsBean; + loadPrefs(); + _initialized = true; + } + + /** + * Returns the preferences bean that this class manages. + * + * @return an implementation instance of IQueryTokenizerPreferenceBean + */ + public IQueryTokenizerPreferenceBean getPreferences() + { + if (!_initialized) + { + throw new IllegalStateException("initialize() must be called first"); + } + return _prefs; + } + + /** + * Saves the preferences + */ + public void unload() + { + savePrefs(); + } + + /** + * Save preferences to disk. + */ + public void savePrefs() + { + if (!_initialized) + { + throw new IllegalStateException("initialize() must be called first"); + } + try + { + XMLBeanWriter wtr = new XMLBeanWriter(_prefs); + wtr.save(fileWrapperFactory.create(_userSettingsFolder, USER_PREFS_FILE_NAME)); + } + catch (Exception ex) + { + s_log.error("Error occured writing to preferences file: " + USER_PREFS_FILE_NAME, ex); + } + } + + /** + * @param fileWrapperFactory + * the fileWrapperFactory to set + */ + public void setFileWrapperFactory(FileWrapperFactory fileWrapperFactory) + { + Utilities.checkNull("setFileWrapperFactory", "fileWrapperFactory", fileWrapperFactory); + PluginQueryTokenizerPreferencesManager.fileWrapperFactory = fileWrapperFactory; + } + + /** + * Load from preferences file. + */ + private void loadPrefs() + { + try + { + XMLBeanReader doc = new XMLBeanReader(); + + FileWrapper prefFile = PreferenceUtil.getPreferenceFileToReadFrom(plugin); + + doc.load(prefFile, _prefs.getClass().getClassLoader()); + + Iterator<Object> it = doc.iterator(); + + if (it.hasNext()) + { + _prefs = (IQueryTokenizerPreferenceBean) it.next(); + } + } + catch (FileNotFoundException ignore) + { + s_log.info(USER_PREFS_FILE_NAME + " not found - will be created"); + } + catch (Exception ex) + { + s_log.error("Error occured reading from preferences file: " + USER_PREFS_FILE_NAME, ex); + } + + _prefs.setClientName(Version.getApplicationName() + "/" + plugin.getDescriptiveName()); + _prefs.setClientVersion(Version.getShortVersion() + "/" + plugin.getVersion()); + } + } Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/plugin/PreferenceUtil.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/plugin/PreferenceUtil.java 2011-03-21 22:57:54 UTC (rev 6204) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/plugin/PreferenceUtil.java 2011-03-23 00:46:58 UTC (rev 6205) @@ -21,81 +21,84 @@ import java.io.File; import java.io.IOException; +import net.sourceforge.squirrel_sql.fw.util.FileWrapper; +import net.sourceforge.squirrel_sql.fw.util.FileWrapperFactory; +import net.sourceforge.squirrel_sql.fw.util.FileWrapperFactoryImpl; import net.sourceforge.squirrel_sql.fw.util.log.ILogger; import net.sourceforge.squirrel_sql.fw.util.log.LoggerController; -public class PreferenceUtil { +public class PreferenceUtil +{ - /** Logger for this class. */ - private final static ILogger s_log = - LoggerController.createLogger(PreferenceUtil.class); - - /** Name of preferences file. */ - private static final String USER_PREFS_FILE_NAME = "prefs.xml"; - - - /** - * Check to see if the user wants to migrate previous settings. If yes, then - * then oldSQuirreLInstallDir contains the user's latest settings so prefer - * that one, unless the user settings directory has a file that is newer. - * @return - */ - public static File getPreferenceFileToReadFrom(IPlugin p) throws IOException { - File userSettingsFolder = p.getPluginUserSettingsFolder(); - final File newUserPreferenceFile = - new File(userSettingsFolder, USER_PREFS_FILE_NAME); - - File result = newUserPreferenceFile; - - String migratePrefsProperty = - System.getProperty("migratePreferences", "false"); - if (migratePrefsProperty != null - && migratePrefsProperty.equalsIgnoreCase("true")) - { - String oldSquirrelLocation = - System.getProperty("oldSQuirreLInstallDir"); - - if (oldSquirrelLocation == null || oldSquirrelLocation.equals("")) { - throw new IllegalStateException( - "migratePreferences was set to true, but " + - "oldSQuirreLInstallDir wasn't set."); - } - - final File oldAppPreferenceFile = - new File(oldSquirrelLocation + File.separator + "plugins" + - File.separator + p.getInternalName() + - File.separator + USER_PREFS_FILE_NAME); - - - // if the old preference file exists and is newer than the - // newUserPreference file, then use it for reading preferences - if (oldAppPreferenceFile.exists()) { - - if (oldAppPreferenceFile.lastModified() > - newUserPreferenceFile.lastModified()) - { - result = oldAppPreferenceFile; - s_log.info("-DmigratePreferences was specified; using "+ - oldAppPreferenceFile.getAbsolutePath()+ - " as the source for preferences - will save " + - "them to "+newUserPreferenceFile.getAbsolutePath()); - } else { - s_log.info("-DmigratePreferences was specified, but file "+ - newUserPreferenceFile.getAbsolutePath()+ " is newer " + - "than "+oldAppPreferenceFile.getAbsolutePath() + - ": migration will be skipped"); - } - - } else { - s_log.info("-DmigratePreferences was specified, but file " + - oldAppPreferenceFile.getAbsolutePath()+" does not " + - "exist! Please remove -DmigratePreferences from the " + - "launch script, or fix -DoldSquirrelLocation to " + - "point to a valid previous SQuirreL installation " + - "directory"); - } - } - return result; - } - + /** Logger for this class. */ + private final static ILogger s_log = LoggerController.createLogger(PreferenceUtil.class); + + /** Name of preferences file. */ + private static final String USER_PREFS_FILE_NAME = "prefs.xml"; + + /** factory for creating FileWrappers which insulate the application from direct reference to File */ + private static FileWrapperFactory fileWrapperFactory = new FileWrapperFactoryImpl(); + + /** + * Check to see if the user wants to migrate previous settings. If yes, then then oldSQuirreLInstallDir + * contains the user's latest settings so prefer that one, unless the user settings directory has a file + * that is newer. + * + * @return + */ + public static FileWrapper getPreferenceFileToReadFrom(IPlugin p) throws IOException + { + FileWrapper userSettingsFolder = p.getPluginUserSettingsFolder(); + final FileWrapper newUserPreferenceFile = + fileWrapperFactory.create(userSettingsFolder, USER_PREFS_FILE_NAME); + + FileWrapper result = newUserPreferenceFile; + + String migratePrefsProperty = System.getProperty("migratePreferences", "false"); + if (migratePrefsProperty != null && migratePrefsProperty.equalsIgnoreCase("true")) + { + String oldSquirrelLocation = System.getProperty("oldSQuirreLInstallDir"); + + if (oldSquirrelLocation == null || oldSquirrelLocation.equals("")) + { + throw new IllegalStateException("migratePreferences was set to true, but " + + "oldSQuirreLInstallDir wasn't set."); + } + + final FileWrapper oldAppPreferenceFile = + fileWrapperFactory.create(oldSquirrelLocation + File.separator + "plugins" + File.separator + + p.getInternalName() + File.separator + USER_PREFS_FILE_NAME); + + // if the old preference file exists and is newer than the + // newUserPreference file, then use it for reading preferences + if (oldAppPreferenceFile.exists()) + { + + if (oldAppPreferenceFile.lastModified() > newUserPreferenceFile.lastModified()) + { + result = oldAppPreferenceFile; + s_log.info("-DmigratePreferences was specified; using " + + oldAppPreferenceFile.getAbsolutePath() + " as the source for preferences - will save " + + "them to " + newUserPreferenceFile.getAbsolutePath()); + } + else + { + s_log.info("-DmigratePreferences was specified, but file " + + newUserPreferenceFile.getAbsolutePath() + " is newer " + "than " + + oldAppPreferenceFile.getAbsolutePath() + ": migration will be skipped"); + } + + } + else + { + s_log.info("-DmigratePreferences was specified, but file " + + oldAppPreferenceFile.getAbsolutePath() + " does not " + + "exist! Please remove -DmigratePreferences from the " + + "launch script, or fix -DoldSquirrelLocation to " + + "point to a valid previous SQuirreL installation " + "directory"); + } + } + return result; + } + } Modified: trunk/sql12/app/src/test/java/net/sourceforge/squirrel_sql/client/plugin/AbstractPluginTest.java =================================================================== --- trunk/sql12/app/src/test/java/net/sourceforge/squirrel_sql/client/plugin/AbstractPluginTest.java 2011-03-21 22:57:54 UTC (rev 6204) +++ trunk/sql12/app/src/test/java/net/sourceforge/squirrel_sql/client/plugin/AbstractPluginTest.java 2011-03-23 00:46:58 UTC (rev 6205) @@ -33,6 +33,10 @@ import net.sourceforge.squirrel_sql.client.preferences.INewSessionPropertiesPanel; import net.sourceforge.squirrel_sql.client.preferences.SquirrelPreferences; import net.sourceforge.squirrel_sql.client.session.SessionManager; +import net.sourceforge.squirrel_sql.client.util.ApplicationFileWrappers; +import net.sourceforge.squirrel_sql.fw.util.FileWrapper; +import net.sourceforge.squirrel_sql.fw.util.FileWrapperFactory; +import net.sourceforge.squirrel_sql.fw.util.FileWrapperFactoryImpl; import net.sourceforge.squirrel_sql.fw.util.IMessageHandler; import net.sourceforge.squirrel_sql.fw.util.IResources; @@ -79,8 +83,19 @@ @Mock private Action mockAction; - + @Mock + protected ApplicationFileWrappers mockApplicationFileWrappers; + + protected FileWrapperFactory fileWrapperFactory = new FileWrapperFactoryImpl(); + + // Locations for various commonly accessed directories + protected FileWrapper targetDirectory = fileWrapperFactory.create("./target"); + protected FileWrapper testHomeDirectory = fileWrapperFactory.create(targetDirectory, "test-home-dir"); + protected FileWrapper testUpdateDirectory = fileWrapperFactory.create(testHomeDirectory, "update"); + protected FileWrapper testPluginsDirectory = fileWrapperFactory.create(testHomeDirectory, "plugins"); + protected FileWrapper testLibDirectory = fileWrapperFactory.create(testHomeDirectory, "lib"); + /** * Sub-class tests must implement this to return an instance of the Plugin being tested. * @@ -106,6 +121,16 @@ } catch (Exception e) {} classUnderTest = getPluginToTest(); + + classUnderTest.setFileWrapperFactory(fileWrapperFactory); + classUnderTest.setApplicationFiles(mockApplicationFileWrappers); + + when(mockApplicationFileWrappers.getPluginsDirectory()).thenReturn(testPluginsDirectory); + when(mockApplicationFileWrappers.getLibraryDirectory()).thenReturn(testLibDirectory); + when(mockApplicationFileWrappers.getPluginsUserSettingsDirectory()).thenReturn(testPluginsDirectory); + when(mockApplicationFileWrappers.getSquirrelHomeDir()).thenReturn(testHomeDirectory)... [truncated message content] |
From: <wi...@us...> - 2011-03-26 12:52:15
|
Revision: 6207 http://squirrel-sql.svn.sourceforge.net/squirrel-sql/?rev=6207&view=rev Author: wis775 Date: 2011-03-26 12:52:09 +0000 (Sat, 26 Mar 2011) Log Message: ----------- 3238037: It's impossible to create a foreign key in oracle 10g, if some tables contains a / in their name eg. recycle bins For some names of BIN$ objects, Oracle's jdbc driver could not fetch the columns. Calling DatabaseMetaData#getColumns for a table like BIN$nPl/2NHWRNXgQKjAQgFYEQ==$0 will end in a ORA-01424: missing or illegal character following the escape character. We have to escape the / by // This is tested with driver version 10.2.0.5.0 an 11.2.0.2.0 Modified Paths: -------------- trunk/sql12/doc/src/main/resources/changes.txt trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/sql/SQLDatabaseMetaData.java Added Paths: ----------- trunk/sql12/fw/src/test/java/net/sourceforge/squirrel_sql/fw/sql/SQLDatabaseMetaDataOracleSpecificTest.java Modified: trunk/sql12/doc/src/main/resources/changes.txt =================================================================== --- trunk/sql12/doc/src/main/resources/changes.txt 2011-03-24 21:51:09 UTC (rev 6206) +++ trunk/sql12/doc/src/main/resources/changes.txt 2011-03-26 12:52:09 UTC (rev 6207) @@ -29,6 +29,8 @@ Bug-fixes: +3238037: It's impossible to create a foreign key in oracle 10g, if some tables contains a / in their name eg. recycle bins + Now, "Press to open logs" shows the current log file by default instead of a random one. 3222350: Cannot enter negative values for numeric fields when editing the result table. Modified: trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/sql/SQLDatabaseMetaData.java =================================================================== --- trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/sql/SQLDatabaseMetaData.java 2011-03-24 21:51:09 UTC (rev 6206) +++ trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/sql/SQLDatabaseMetaData.java 2011-03-26 12:52:09 UTC (rev 6207) @@ -33,6 +33,7 @@ import java.util.TreeMap; import java.util.TreeSet; + import net.sourceforge.squirrel_sql.fw.datasetviewer.DataSetException; import net.sourceforge.squirrel_sql.fw.datasetviewer.DatabaseTypesDataSet; import net.sourceforge.squirrel_sql.fw.datasetviewer.IDataSet; @@ -1689,7 +1690,7 @@ private ResultSet getColumns(ITableInfo ti) throws SQLException { - return privateGetJDBCMetaData().getColumns(ti.getCatalogName(), ti.getSchemaName(), ti.getSimpleName(), + return privateGetJDBCMetaData().getColumns(ti.getCatalogName(), ti.getSchemaName(), escapeTableNames(ti.getSimpleName()), "%"); } @@ -1730,6 +1731,9 @@ throws SQLException { ResultSet rs = null; + + table = escapeTableNames(table); + try { final Map<Integer, TableColumnInfo> columns = new TreeMap<Integer, TableColumnInfo>(); @@ -1798,6 +1802,27 @@ } /** + * For some databases, we need to escape table names. + * e.g. for Oracle, we need to escape the slash in BIN$ objects, because the JDBC-driver could not handle them until now (version 11.2.0.2.0) + * @param table name of the table, which might contains some chars to escape + * @return the escaped table name, or the original, if escaping is not necessary. + */ + private String escapeTableNames(String table) { + if(DialectFactory.isOracle(this) && table != null){ + /* + * For some names of BIN$ objects, the jdbc driver could not catch the columns. + * Calling DatabaseMetaData#getColumns for a table like BIN$nPl/2NHWRNXgQKjAQgFYEQ==$0 will end in a + * ORA-01424: missing or illegal character following the escape character. + * + */ + if(table.startsWith("BIN$")){ + table = table.replaceAll("/", "//"); + } + } + return table; + } + + /** * @see net.sourceforge.squirrel_sql.fw.sql.ISQLDatabaseMetaData#getColumnInfo(net.sourceforge.squirrel_sql.fw.sql.ITableInfo) */ public synchronized TableColumnInfo[] getColumnInfo(ITableInfo ti) throws SQLException Added: trunk/sql12/fw/src/test/java/net/sourceforge/squirrel_sql/fw/sql/SQLDatabaseMetaDataOracleSpecificTest.java =================================================================== --- trunk/sql12/fw/src/test/java/net/sourceforge/squirrel_sql/fw/sql/SQLDatabaseMetaDataOracleSpecificTest.java (rev 0) +++ trunk/sql12/fw/src/test/java/net/sourceforge/squirrel_sql/fw/sql/SQLDatabaseMetaDataOracleSpecificTest.java 2011-03-26 12:52:09 UTC (rev 6207) @@ -0,0 +1,116 @@ +package net.sourceforge.squirrel_sql.fw.sql; + +/* + * Copyright (C) 2011 Stefan Willinger + * wi...@us... + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +import static org.easymock.EasyMock.expect; +import static org.junit.Assert.assertEquals; + +import java.sql.Connection; +import java.sql.DatabaseMetaData; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; +import java.sql.SQLException; + +import net.sourceforge.squirrel_sql.BaseSQuirreLJUnit4TestCase; + +import org.junit.Before; +import org.junit.Test; + +import utils.EasyMockHelper; + +/** + * Some Oracle specific tests for {@link SQLDatabaseMetaData}. + * @author Stefan Willinger + * + */ +public class SQLDatabaseMetaDataOracleSpecificTest extends BaseSQuirreLJUnit4TestCase { + + private SQLDatabaseMetaData classUnderTest = null; + private EasyMockHelper mockHelper = new EasyMockHelper(); + + /* Mock Objects */ + private Connection mockConnection = mockHelper.createMock(Connection.class); + private ISQLConnection mockSqlConnection = mockHelper.createMock(ISQLConnection.class); + private DatabaseMetaData mockDatabaseMetaData = mockHelper.createMock(DatabaseMetaData.class); + + @Before + public void setUp() throws Exception { + + expect(mockDatabaseMetaData.getDatabaseProductName()).andStubReturn("Oracle"); + expect(mockDatabaseMetaData.getDatabaseProductVersion()).andStubReturn("10.2.0.2.0"); + expect(mockDatabaseMetaData.supportsSchemasInIndexDefinitions()).andStubReturn(true); + expect(mockDatabaseMetaData.supportsSchemasInDataManipulation()).andStubReturn(true); + expect(mockDatabaseMetaData.supportsCatalogsInDataManipulation()).andStubReturn(true); + expect(mockDatabaseMetaData.supportsSchemasInTableDefinitions()).andStubReturn(true); + expect(mockDatabaseMetaData.getCatalogSeparator()).andStubReturn("."); + expect(mockDatabaseMetaData.getIdentifierQuoteString()).andStubReturn("\""); + + expect(mockConnection.getMetaData()).andStubReturn(mockDatabaseMetaData); + expect(mockSqlConnection.getConnection()).andStubReturn(mockConnection); + + } + + /** + * Ensures, that table names of recycle bins are escaped before calling {@link DatabaseMetaData#getColumns(String, String, String, String)} + * For some names of BIN$ objects, the jdbc driver could not catch the columns. + * Calling getColumns for a table like BIN$nPl/2NHWRNXgQKjAQgFYEQ==$0 will end in a exception without escaping + * ORA-01424: missing or illegal character following the escape character. + * + * This test ensures, that the table name is escaped for a Oracle Database + * + */ + @Test + public void testGetColumnsForOracleRecycleBin() throws SQLException { + + final String tableNameExpected = "BIN$nPl//2NHWRNXgQKjAQgFYEQ==$0"; + final String tableName = "BIN$nPl/2NHWRNXgQKjAQgFYEQ==$0"; + + // Build an empty ResultSet + ResultSet columnResultSet = buildTableMetaDataResultSet(); + + // Ensure, that getColumns() was called with the escaped table name. + expect(mockDatabaseMetaData.getColumns(null, "mySchema", tableNameExpected, "%")).andReturn(columnResultSet); + mockHelper.replayAll(); + classUnderTest = new SQLDatabaseMetaData(mockSqlConnection); + + // Check to be sure we get only one schema + TableColumnInfo[] columnInfo = classUnderTest.getColumnInfo(null, "mySchema", tableName); + // we expect an empty table info because this test ensures escaping the table name. + assertEquals(0, columnInfo.length); + + mockHelper.verifyAll(); + } + + + /** + * The ResultSet is empty. + */ + private ResultSet buildTableMetaDataResultSet() throws SQLException { + ResultSetMetaData rsmd = mockHelper.createMock(ResultSetMetaData.class); + + ResultSet rs = mockHelper.createMock(ResultSet.class); + expect(rs.getMetaData()).andStubReturn(rsmd); + + expect(rs.next()).andReturn(false); + rs.close(); + return rs; + + } + +} Property changes on: trunk/sql12/fw/src/test/java/net/sourceforge/squirrel_sql/fw/sql/SQLDatabaseMetaDataOracleSpecificTest.java ___________________________________________________________________ Added: svn:mime-type + text/plain This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <man...@us...> - 2011-03-26 18:00:41
|
Revision: 6210 http://squirrel-sql.svn.sourceforge.net/squirrel-sql/?rev=6210&view=rev Author: manningr Date: 2011-03-26 18:00:34 +0000 (Sat, 26 Mar 2011) Log Message: ----------- Added new automated test for launching SQuirreL from the generic installer project, automatically connecting to an embedded derby database, shutting down after 20 seconds, and checking the log file for errors and exceptions. All testing-related profile information is kept below the target directory for build portability. The test is ignored by default, but can be trigger using Modified Paths: -------------- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/Application.java trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/ApplicationArguments.java trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/IApplication.java trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/gui/mainframe/MainFrame.java Added Paths: ----------- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/IShutdownTimer.java trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/ShutdownTimer.java trunk/sql12/installer/squirrelsql-other-installer/src/test/java/ trunk/sql12/installer/squirrelsql-other-installer/src/test/java/net/ trunk/sql12/installer/squirrelsql-other-installer/src/test/java/net/sourceforge/ trunk/sql12/installer/squirrelsql-other-installer/src/test/java/net/sourceforge/squirrel_sql/ trunk/sql12/installer/squirrelsql-other-installer/src/test/java/net/sourceforge/squirrel_sql/test/ trunk/sql12/installer/squirrelsql-other-installer/src/test/java/net/sourceforge/squirrel_sql/test/FindErrorsInLogIntegrationTest.java trunk/sql12/installer/squirrelsql-other-installer/src/test/resources/user-settings-dir/ trunk/sql12/installer/squirrelsql-other-installer/src/test/resources/user-settings-dir/DTproperties.xml trunk/sql12/installer/squirrelsql-other-installer/src/test/resources/user-settings-dir/SQLAliases23.xml trunk/sql12/installer/squirrelsql-other-installer/src/test/resources/user-settings-dir/SQLAliases23_treeStructure.xml trunk/sql12/installer/squirrelsql-other-installer/src/test/resources/user-settings-dir/SQLDrivers.xml trunk/sql12/installer/squirrelsql-other-installer/src/test/resources/user-settings-dir/editWhereCols.xml trunk/sql12/installer/squirrelsql-other-installer/src/test/resources/user-settings-dir/prefs.xml trunk/sql12/installer/squirrelsql-other-installer/src/test/resources/user-settings-dir/sql_history.xml Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/Application.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/Application.java 2011-03-26 14:09:59 UTC (rev 6209) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/Application.java 2011-03-26 18:00:34 UTC (rev 6210) @@ -164,6 +164,8 @@ private PreLaunchHelperFactory preLaunchHelperFactory = new PreLaunchHelperFactoryImpl(); + private IShutdownTimer _shutdownTimer = new ShutdownTimer(); + /** * Default ctor. */ @@ -212,7 +214,7 @@ /** * Application is shutting down. */ - public boolean shutdown() + public boolean shutdown(boolean updateLaunchScript) { s_log.info(s_stringMgr.getString("Application.shutdown", Calendar.getInstance().getTime())); @@ -229,7 +231,9 @@ SchemaInfoCacheSerializer.waitTillStoringIsDone(); - updateLaunchScript(); + if (updateLaunchScript) { + updateLaunchScript(); + } String msg = s_stringMgr.getString("Application.shutdowncomplete", Calendar.getInstance().getTime()); s_log.info(msg); @@ -492,6 +496,7 @@ */ public void showErrorDialog(String msg) { + s_log.error(msg); new ErrorDialog(getMainFrame(), msg).setVisible(true); } @@ -503,6 +508,7 @@ */ public void showErrorDialog(Throwable th) { + s_log.error(th); new ErrorDialog(getMainFrame(), th).setVisible(true); } @@ -516,6 +522,7 @@ */ public void showErrorDialog(String msg, Throwable th) { + s_log.error(msg, th); new ErrorDialog(getMainFrame(), msg, th).setVisible(true); } @@ -795,6 +802,12 @@ updateCheckTimer = new UpdateCheckTimerImpl(this); updateCheckTimer.start(); + + if (args.getShutdownTimerSeconds() != null) { + _shutdownTimer.setShutdownSeconds(args.getShutdownTimerSeconds()); + _shutdownTimer.setApplication(this); + _shutdownTimer.start(); + } } /** @@ -1220,5 +1233,13 @@ public void setPreLaunchHelperFactory(PreLaunchHelperFactory preLaunchHelperFactory) { this.preLaunchHelperFactory = preLaunchHelperFactory; + } + + /** + * @param shutdownTimer the _shutdownTimer to set + */ + public void setShutdownTimer(IShutdownTimer shutdownTimer) + { + _shutdownTimer = shutdownTimer; } } Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/ApplicationArguments.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/ApplicationArguments.java 2011-03-26 14:09:59 UTC (rev 6209) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/ApplicationArguments.java 2011-03-26 18:00:34 UTC (rev 6210) @@ -71,6 +71,9 @@ "Provides tool-tips and highlighting of UI components for easy identification" }; String[] PLUGIN_LIST = { "pluginlist", "plugin-classpath-list", "Specify a comma-delimited list of plugins to load from the CLASSPATH" }; + String[] SHUTDOWN_TIMEOUT_SECONDS = { "s", "shutdown-timeout-seconds", + "Specify the number of seconds to allow the application to run before exiting the VM" }; + } /** Only instance of this class. */ @@ -97,8 +100,12 @@ /** Path for logging configuration file */ private String _loggingConfigFile = null; + /** List of plugins to load from the classloader */ private List<String> _pluginList = null; + /** Time in seconds to allow the application to run prior to exiting the VM */ + private Integer _shutdownTimerSeconds = null; + /** * Ctor specifying arguments from command line. * @@ -149,6 +156,9 @@ _pluginList = Collections.unmodifiableList(_pluginList); } } + if (_cmdLine.hasOption(IOptions.SHUTDOWN_TIMEOUT_SECONDS[0])) { + _shutdownTimerSeconds = Integer.parseInt(_cmdLine.getOptionValue(IOptions.SHUTDOWN_TIMEOUT_SECONDS[0])); + } } @@ -286,6 +296,10 @@ return _pluginList; } + public Integer getShutdownTimerSeconds() { + return _shutdownTimerSeconds; + } + void printHelp() { HelpFormatter formatter = new HelpFormatter(); @@ -328,6 +342,9 @@ opt = createAnOptionWithArgument(IOptions.PLUGIN_LIST); _options.addOption(opt); + + opt = createAnOptionWithArgument(IOptions.SHUTDOWN_TIMEOUT_SECONDS); + _options.addOption(opt); } private Option createAnOption(String[] argInfo) Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/IApplication.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/IApplication.java 2011-03-26 14:09:59 UTC (rev 6209) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/IApplication.java 2011-03-26 18:00:34 UTC (rev 6210) @@ -207,8 +207,10 @@ /** * Application shutdown processing. + * + * @param whether or not to update the launch script before shutdown. */ - boolean shutdown(); + boolean shutdown(boolean updateLaunchScript); /** * Launches the specified url in the system default web-browser Added: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/IShutdownTimer.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/IShutdownTimer.java (rev 0) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/IShutdownTimer.java 2011-03-26 18:00:34 UTC (rev 6210) @@ -0,0 +1,40 @@ +package net.sourceforge.squirrel_sql.client; + +/* + * Copyright (C) 2011 Rob Manning + * man...@us... + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +public interface IShutdownTimer +{ + + /** + * Starts the timer. + */ + void start(); + + /** + * @param shutdownSeconds the _shutdownSeconds to set + */ + void setShutdownSeconds(int shutdownSeconds); + + /** + * @param app the _app to set + */ + void setApplication(IApplication app); + +} \ No newline at end of file Added: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/ShutdownTimer.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/ShutdownTimer.java (rev 0) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/ShutdownTimer.java 2011-03-26 18:00:34 UTC (rev 6210) @@ -0,0 +1,85 @@ +package net.sourceforge.squirrel_sql.client; + +import net.sourceforge.squirrel_sql.fw.util.log.ILogger; +import net.sourceforge.squirrel_sql.fw.util.log.LoggerController; + +/* + * Copyright (C) 2011 Rob Manning + * man...@us... + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/** + * Shutdown thread that can be used to shutdown the application after a certain number of seconds. + */ +public class ShutdownTimer implements Runnable, IShutdownTimer +{ + + /** Logger for this class. */ + private static ILogger s_log = LoggerController.createLogger(ShutdownTimer.class); + + /** Number of seconds to wait before initiating shutdown */ + private int _shutdownSeconds; + + /** The app implementation that can perform a clean shutdown */ + private IApplication _app; + + public ShutdownTimer() { + } + + /** + * @see net.sourceforge.squirrel_sql.client.IShutdownTimer#start() + */ + public void start() { + Thread t = new Thread(this, "ShutdownTimerThread"); + t.start(); + } + + @Override + public void run() + { + try + { + Thread.sleep(_shutdownSeconds * 1000); + } + catch (InterruptedException e) + { + s_log.error("Shutdown timer thread was interrupted unexpectedly: "+e.getMessage(), e); + } + + if (s_log.isInfoEnabled()) { + s_log.info("ShutdownTimer is shutting down the application"); + } + + System.exit(_app.shutdown(false) ? 0 : 1); + } + + /** + * @see net.sourceforge.squirrel_sql.client.IShutdownTimer#setShutdownSeconds(int) + */ + public void setShutdownSeconds(int shutdownSeconds) + { + _shutdownSeconds = shutdownSeconds; + } + + /** + * @see net.sourceforge.squirrel_sql.client.IShutdownTimer#setApplication(net.sourceforge.squirrel_sql.client.IApplication) + */ + public void setApplication(IApplication app) + { + _app = app; + } +} Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/gui/mainframe/MainFrame.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/gui/mainframe/MainFrame.java 2011-03-26 14:09:59 UTC (rev 6209) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/gui/mainframe/MainFrame.java 2011-03-26 18:00:34 UTC (rev 6210) @@ -134,7 +134,7 @@ public void dispose() { boolean shouldDispose = true; - if (!_app.shutdown()) + if (!_app.shutdown(true)) { String msg = s_stringMgr.getString("MainFrame.errorOnClose"); shouldDispose = Dialogs.showYesNo(_app.getMainFrame(), msg); Added: trunk/sql12/installer/squirrelsql-other-installer/src/test/java/net/sourceforge/squirrel_sql/test/FindErrorsInLogIntegrationTest.java =================================================================== --- trunk/sql12/installer/squirrelsql-other-installer/src/test/java/net/sourceforge/squirrel_sql/test/FindErrorsInLogIntegrationTest.java (rev 0) +++ trunk/sql12/installer/squirrelsql-other-installer/src/test/java/net/sourceforge/squirrel_sql/test/FindErrorsInLogIntegrationTest.java 2011-03-26 18:00:34 UTC (rev 6210) @@ -0,0 +1,64 @@ +package net.sourceforge.squirrel_sql.test; + +import java.io.File; +import java.io.IOException; +import java.util.List; + +import net.sourceforge.squirrel_sql.fw.util.IOUtilities; +import net.sourceforge.squirrel_sql.fw.util.IOUtilitiesImpl; + +import org.junit.Assert; +import org.junit.Test; +import org.junit.internal.runners.JUnit4ClassRunner; +import org.junit.runner.RunWith; + +/* + * Copyright (C) 2011 Rob Manning + * man...@us... + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +@RunWith(JUnit4ClassRunner.class) +public class FindErrorsInLogIntegrationTest +{ + + private final IOUtilities ioutils = new IOUtilitiesImpl(); + + private static final String LOG_FILE = "./target/test-classes/user-settings-dir/logs/squirrel-sql.log"; + + @Test + public void searchForLoggerErrors() throws IOException { + + File logFile = new File(LOG_FILE); + if (!logFile.exists()) { + return; + } + + List<String> lines = ioutils.getLinesFromFile(LOG_FILE, null); + for (String line : lines) { + if (line.contains("Exception")) { + Assert.fail("Detected an exception in log file ("+LOG_FILE+") : "+line); + } + if (line.contains("error") || line.contains("Error")) { + Assert.fail("Detected an error in log file ("+LOG_FILE+") : "+line); + } + + } + + } + + +} Added: trunk/sql12/installer/squirrelsql-other-installer/src/test/resources/user-settings-dir/DTproperties.xml =================================================================== --- trunk/sql12/installer/squirrelsql-other-installer/src/test/resources/user-settings-dir/DTproperties.xml (rev 0) +++ trunk/sql12/installer/squirrelsql-other-installer/src/test/resources/user-settings-dir/DTproperties.xml 2011-03-26 18:00:34 UTC (rev 6210) @@ -0,0 +1,90 @@ +<Beans> + <Bean Class="net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.DTProperties"> + <dataArray Indexed="true"> + <Bean Class="net.sourceforge.squirrel_sql.fw.util.beanwrapper.StringWrapper"> + <string>net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.DataTypeTime useJavaDefaultFormat=true</string> + </Bean> + <Bean Class="net.sourceforge.squirrel_sql.fw.util.beanwrapper.StringWrapper"> + <string>net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.DataTypeTime lenient=true</string> + </Bean> + <Bean Class="net.sourceforge.squirrel_sql.fw.util.beanwrapper.StringWrapper"> + <string>net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.DataTypeTime localeFormat=3</string> + </Bean> + <Bean Class="net.sourceforge.squirrel_sql.fw.util.beanwrapper.StringWrapper"> + <string>net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.DataTypeString limitReadColumnNames=</string> + </Bean> + <Bean Class="net.sourceforge.squirrel_sql.fw.util.beanwrapper.StringWrapper"> + <string>net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.DataTypeString limitRead=false</string> + </Bean> + <Bean Class="net.sourceforge.squirrel_sql.fw.util.beanwrapper.StringWrapper"> + <string>net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.DataTypeString limitReadOnSpecificColumns=false</string> + </Bean> + <Bean Class="net.sourceforge.squirrel_sql.fw.util.beanwrapper.StringWrapper"> + <string>net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.DataTypeString limitReadLength=100</string> + </Bean> + <Bean Class="net.sourceforge.squirrel_sql.fw.util.beanwrapper.StringWrapper"> + <string>net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.DataTypeString useLongInWhere=true</string> + </Bean> + <Bean Class="net.sourceforge.squirrel_sql.fw.util.beanwrapper.StringWrapper"> + <string>net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.DataTypeString makeNewlinesVisibleInCell=true</string> + </Bean> + <Bean Class="net.sourceforge.squirrel_sql.fw.util.beanwrapper.StringWrapper"> + <string>net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.DataTypeClob readClobsSize=255</string> + </Bean> + <Bean Class="net.sourceforge.squirrel_sql.fw.util.beanwrapper.StringWrapper"> + <string>net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.DataTypeClob readCompleteClobs=false</string> + </Bean> + <Bean Class="net.sourceforge.squirrel_sql.fw.util.beanwrapper.StringWrapper"> + <string>net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.DataTypeClob makeNewlinesVisibleInCell=true</string> + </Bean> + <Bean Class="net.sourceforge.squirrel_sql.fw.util.beanwrapper.StringWrapper"> + <string>net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.DataTypeClob readClobs=false</string> + </Bean> + <Bean Class="net.sourceforge.squirrel_sql.fw.util.beanwrapper.StringWrapper"> + <string>net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.DataTypeBlob readBlobs=false</string> + </Bean> + <Bean Class="net.sourceforge.squirrel_sql.fw.util.beanwrapper.StringWrapper"> + <string>net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.DataTypeBlob readCompleteBlobs=false</string> + </Bean> + <Bean Class="net.sourceforge.squirrel_sql.fw.util.beanwrapper.StringWrapper"> + <string>net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.DataTypeBlob readBlobsSize=255</string> + </Bean> + <Bean Class="net.sourceforge.squirrel_sql.fw.util.beanwrapper.StringWrapper"> + <string>net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.DataTypeTimestamp whereClauseUsage=1</string> + </Bean> + <Bean Class="net.sourceforge.squirrel_sql.fw.util.beanwrapper.StringWrapper"> + <string>net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.DataTypeTimestamp useJavaDefaultFormat=true</string> + </Bean> + <Bean Class="net.sourceforge.squirrel_sql.fw.util.beanwrapper.StringWrapper"> + <string>net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.DataTypeTimestamp lenient=true</string> + </Bean> + <Bean Class="net.sourceforge.squirrel_sql.fw.util.beanwrapper.StringWrapper"> + <string>net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.DataTypeTimestamp localeFormat=3</string> + </Bean> + <Bean Class="net.sourceforge.squirrel_sql.fw.util.beanwrapper.StringWrapper"> + <string>net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.DataTypeOther readSQLOther=false</string> + </Bean> + <Bean Class="net.sourceforge.squirrel_sql.fw.util.beanwrapper.StringWrapper"> + <string>net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.DataTypeUnknown readUnknown=false</string> + </Bean> + <Bean Class="net.sourceforge.squirrel_sql.fw.util.beanwrapper.StringWrapper"> + <string>net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.DataTypeBigDecimal useJavaDefaultFormat=false</string> + </Bean> + <Bean Class="net.sourceforge.squirrel_sql.fw.util.beanwrapper.StringWrapper"> + <string>net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.DataTypeGeneral useColumnLabelInsteadColumnName=false</string> + </Bean> + <Bean Class="net.sourceforge.squirrel_sql.fw.util.beanwrapper.StringWrapper"> + <string>net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.DataTypeDate readDateAsTimestamp=false</string> + </Bean> + <Bean Class="net.sourceforge.squirrel_sql.fw.util.beanwrapper.StringWrapper"> + <string>net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.DataTypeDate useJavaDefaultFormat=true</string> + </Bean> + <Bean Class="net.sourceforge.squirrel_sql.fw.util.beanwrapper.StringWrapper"> + <string>net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.DataTypeDate lenient=true</string> + </Bean> + <Bean Class="net.sourceforge.squirrel_sql.fw.util.beanwrapper.StringWrapper"> + <string>net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.DataTypeDate localeFormat=3</string> + </Bean> + </dataArray> + </Bean> +</Beans> Added: trunk/sql12/installer/squirrelsql-other-installer/src/test/resources/user-settings-dir/SQLAliases23.xml =================================================================== --- trunk/sql12/installer/squirrelsql-other-installer/src/test/resources/user-settings-dir/SQLAliases23.xml (rev 0) +++ trunk/sql12/installer/squirrelsql-other-installer/src/test/resources/user-settings-dir/SQLAliases23.xml 2011-03-26 18:00:34 UTC (rev 6210) @@ -0,0 +1,40 @@ +<Beans> + <Bean Class="net.sourceforge.squirrel_sql.client.gui.db.SQLAlias"> + <autoLogon>true</autoLogon> + <colorProperties Class="net.sourceforge.squirrel_sql.client.gui.db.SQLAliasColorProperties"> + <objectTreeBackgroundColorRgbValue>0</objectTreeBackgroundColorRgbValue> + <overrideObjectTreeBackgroundColor>false</overrideObjectTreeBackgroundColor> + <overrideStatusBarBackgroundColor>false</overrideStatusBarBackgroundColor> + <overrideToolbarBackgroundColor>false</overrideToolbarBackgroundColor> + <statusBarBackgroundColorRgbValue>0</statusBarBackgroundColorRgbValue> + <toolbarBackgroundColorRgbValue>0</toolbarBackgroundColorRgbValue> + </colorProperties> + <connectAtStartup>true</connectAtStartup> + <connectionProperties Class="net.sourceforge.squirrel_sql.client.gui.db.SQLAliasConnectionProperties"> + <enableConnectionKeepAlive>false</enableConnectionKeepAlive> + <keepAliveSleepTimeSeconds>120</keepAliveSleepTimeSeconds> + <keepAliveSqlStatement/> + </connectionProperties> + <driverIdentifier Class="net.sourceforge.squirrel_sql.fw.id.UidIdentifier"> + <string>-30</string> + </driverIdentifier> + <driverProperties Class="net.sourceforge.squirrel_sql.fw.sql.SQLDriverPropertyCollection"> + <driverProperties Indexed="true"/> + </driverProperties> + <identifier Class="net.sourceforge.squirrel_sql.fw.id.UidIdentifier"> + <string>-62d3f2cb:12e932b04b0:-7f68</string> + </identifier> + <name>testdb</name> + <password/> + <schemaProperties Class="net.sourceforge.squirrel_sql.client.gui.db.SQLAliasSchemaProperties"> + <allSchemaProceduresNotToBeCached Indexed="true"/> + <cacheSchemaIndependentMetaData>false</cacheSchemaIndependentMetaData> + <expectsSomeCachedData>false</expectsSomeCachedData> + <globalState>0</globalState> + <schemaDetails Indexed="true"/> + </schemaProperties> + <url>jdbc:derby:${project.build.directory}/derbydb;create=true</url> + <useDriverProperties>false</useDriverProperties> + <userName>sa</userName> + </Bean> +</Beans> Added: trunk/sql12/installer/squirrelsql-other-installer/src/test/resources/user-settings-dir/SQLAliases23_treeStructure.xml =================================================================== --- trunk/sql12/installer/squirrelsql-other-installer/src/test/resources/user-settings-dir/SQLAliases23_treeStructure.xml (rev 0) +++ trunk/sql12/installer/squirrelsql-other-installer/src/test/resources/user-settings-dir/SQLAliases23_treeStructure.xml 2011-03-26 18:00:34 UTC (rev 6210) @@ -0,0 +1,19 @@ +<Beans> + <Bean Class="net.sourceforge.squirrel_sql.client.gui.db.AliasFolderState"> + <aliasIdentifier/> + <expanded>true</expanded> + <folderName>JTree</folderName> + <kids Indexed="true"> + <Bean Class="net.sourceforge.squirrel_sql.client.gui.db.AliasFolderState"> + <aliasIdentifier Class="net.sourceforge.squirrel_sql.fw.id.UidIdentifier"> + <string>-62d3f2cb:12e932b04b0:-7f68</string> + </aliasIdentifier> + <expanded>false</expanded> + <folderName/> + <kids Indexed="true"/> + <selected>true</selected> + </Bean> + </kids> + <selected>false</selected> + </Bean> +</Beans> Added: trunk/sql12/installer/squirrelsql-other-installer/src/test/resources/user-settings-dir/SQLDrivers.xml =================================================================== --- trunk/sql12/installer/squirrelsql-other-installer/src/test/resources/user-settings-dir/SQLDrivers.xml (rev 0) +++ trunk/sql12/installer/squirrelsql-other-installer/src/test/resources/user-settings-dir/SQLDrivers.xml 2011-03-26 18:00:34 UTC (rev 6210) @@ -0,0 +1,35 @@ +<Beans> + <Bean Class="net.sourceforge.squirrel_sql.fw.sql.SQLDriver"> + <driverClassName>org.apache.derby.jdbc.EmbeddedDriver</driverClassName> + <identifier Class="net.sourceforge.squirrel_sql.fw.id.UidIdentifier"> + <string>-30</string> + </identifier> + <jarFileName/> + <jarFileNames Indexed="true"> + <Bean Class="net.sourceforge.squirrel_sql.fw.util.beanwrapper.StringWrapper"> + <string>${project.build.directory}/derby-driver/derby.jar</string> + </Bean> + </jarFileNames> + <name>Apache Derby Embedded</name> + <url>jdbc:derby:<database>[;create=true]</url> + <websiteUrl>http://db.apache.org/derby</websiteUrl> + </Bean> + <Bean Class="net.sourceforge.squirrel_sql.fw.sql.SQLDriver"> + <driverClassName>org.firebirdsql.jdbc.FBDriver</driverClassName> + <identifier Class="net.sourceforge.squirrel_sql.fw.id.UidIdentifier"> + <string>-28</string> + </identifier> + <jarFileName/> + <jarFileNames Indexed="true"> + <Bean Class="net.sourceforge.squirrel_sql.fw.util.beanwrapper.StringWrapper"> + <string>${project.build.directory}/firebird-driver/jaybird-jdk16.jar</string> + </Bean> + <Bean Class="net.sourceforge.squirrel_sql.fw.util.beanwrapper.StringWrapper"> + <string>${project.build.directory}/firebird-driver/geronimo-spec-j2ee-connector.jar</string> + </Bean> + </jarFileNames> + <name>Firebird JayBird</name> + <url>jdbc:firebirdsql:[//host[:port]/]<database></url> + <websiteUrl>http://www.firebirdsql.org</websiteUrl> + </Bean> +</Beans> Added: trunk/sql12/installer/squirrelsql-other-installer/src/test/resources/user-settings-dir/editWhereCols.xml =================================================================== --- trunk/sql12/installer/squirrelsql-other-installer/src/test/resources/user-settings-dir/editWhereCols.xml (rev 0) +++ trunk/sql12/installer/squirrelsql-other-installer/src/test/resources/user-settings-dir/editWhereCols.xml 2011-03-26 18:00:34 UTC (rev 6210) @@ -0,0 +1,5 @@ +<Beans> + <Bean Class="net.sourceforge.squirrel_sql.client.session.properties.EditWhereCols"> + <dataArray Indexed="true"/> + </Bean> +</Beans> Added: trunk/sql12/installer/squirrelsql-other-installer/src/test/resources/user-settings-dir/prefs.xml =================================================================== --- trunk/sql12/installer/squirrelsql-other-installer/src/test/resources/user-settings-dir/prefs.xml (rev 0) +++ trunk/sql12/installer/squirrelsql-other-installer/src/test/resources/user-settings-dir/prefs.xml 2011-03-26 18:00:34 UTC (rev 6210) @@ -0,0 +1,137 @@ +<Beans> + <Bean Class="net.sourceforge.squirrel_sql.client.preferences.SquirrelPreferences"> + <actionKeys Indexed="true"/> + <confirmSessionClose>false</confirmSessionClose> + <fileOpenInPreviousDir>true</fileOpenInPreviousDir> + <fileOpenInSpecifiedDir>false</fileOpenInSpecifiedDir> + <filePreviousdDir>/tmp</filePreviousdDir> + <fileSpecifiedDir/> + <firstRun>false</firstRun> + <getUseScrollableTabbedPanes>false</getUseScrollableTabbedPanes> + <jdbcDebugtype>0</jdbcDebugtype> + <largeScriptStmtCount>200</largeScriptStmtCount> + <loginTimeout>30</loginTimeout> + <mainFrameWindowState Class="net.sourceforge.squirrel_sql.client.gui.mainframe.MainFrameWindowState"> + <aliasesWindowState Class="net.sourceforge.squirrel_sql.fw.gui.WindowState"> + <bounds Class="net.sourceforge.squirrel_sql.fw.util.beanwrapper.RectangleWrapper"> + <height>400</height> + <width>600</width> + <x>0</x> + <y>0</y> + </bounds> + <frameExtendedState>0</frameExtendedState> + <visible>true</visible> + </aliasesWindowState> + <bounds Class="net.sourceforge.squirrel_sql.fw.util.beanwrapper.RectangleWrapper"> + <height>733</height> + <width>1103</width> + <x>766</x> + <y>403</y> + </bounds> + <driversWindowState Class="net.sourceforge.squirrel_sql.fw.gui.WindowState"> + <bounds Class="net.sourceforge.squirrel_sql.fw.util.beanwrapper.RectangleWrapper"> + <height>400</height> + <width>600</width> + <x>0</x> + <y>0</y> + </bounds> + <frameExtendedState>0</frameExtendedState> + <visible>true</visible> + </driversWindowState> + <frameExtendedState>0</frameExtendedState> + <visible>true</visible> + </mainFrameWindowState> + <maximizeSessionSheetOnOpen>false</maximizeSessionSheetOnOpen> + <newSessionView/> + <pluginStatuses Indexed="true"/> + <preferredLocale>en_US</preferredLocale> + <proxyPerferences Class="net.sourceforge.squirrel_sql.fw.util.ProxySettings"> + <httpNonProxyHosts/> + <httpProxyPassword/> + <httpProxyPort/> + <httpProxyServer/> + <httpProxyUser/> + <httpUseProxy>false</httpUseProxy> + <socksProxyPort/> + <socksProxyServer/> + <socksUseProxy>false</socksUseProxy> + </proxyPerferences> + <savePreferencesImmediately>true</savePreferencesImmediately> + <selectOnRightMouseClick>true</selectOnRightMouseClick> + <sessionProperties Class="net.sourceforge.squirrel_sql.client.session.properties.SessionProperties"> + <abortOnError>true</abortOnError> + <autoCommit>true</autoCommit> + <catalogFilterExclude/> + <catalogFilterInclude/> + <commitOnClosingConnection>false</commitOnClosingConnection> + <contentsLimitRows>true</contentsLimitRows> + <contentsNbrOfRowsToShow>100</contentsNbrOfRowsToShow> + <fontInfo Class="net.sourceforge.squirrel_sql.fw.gui.FontInfo"> + <family>Monospaced</family> + <isBold>false</isBold> + <isItalic>false</isItalic> + <size>12</size> + </fontInfo> + <keepTableLayoutOnRerun>false</keepTableLayoutOnRerun> + <limitSqlEntryHistorySize>true</limitSqlEntryHistorySize> + <limitSqlResultTabs>true</limitSqlResultTabs> + <loadCatalogsSchemas>true</loadCatalogsSchemas> + <loadColumnsInBackground>false</loadColumnsInBackground> + <mainTabPlacement>1</mainTabPlacement> + <metaDataOutputClassName>net.sourceforge.squirrel_sql.fw.datasetviewer.DataSetViewerTablePanel</metaDataOutputClassName> + <objectFilterExclude/> + <objectFilterInclude/> + <objectTabPlacement>1</objectTabPlacement> + <removeMultiLineComment>true</removeMultiLineComment> + <schemaFilterExclude/> + <schemaFilterInclude/> + <showResultsMetaData>true</showResultsMetaData> + <showRowCount>false</showRowCount> + <showToolBar>true</showToolBar> + <sqlEntryHistorySize>100</sqlEntryHistorySize> + <sqlExecutionTabPlacement>1</sqlExecutionTabPlacement> + <sqlFetchSize>false</sqlFetchSize> + <sqlLimitRows>true</sqlLimitRows> + <sqlNbrOfRowsToShow>100</sqlNbrOfRowsToShow> + <sqlResultTabLimit>15</sqlResultTabLimit> + <sqlResultsOutputClassName>net.sourceforge.squirrel_sql.fw.datasetviewer.DataSetViewerTablePanel</sqlResultsOutputClassName> + <sqlResultsTabPlacement>1</sqlResultsTabPlacement> + <sqlShareHistory>true</sqlShareHistory> + <sqlStartOfLineComment>--</sqlStartOfLineComment> + <sqlStatementSeparatorString>;</sqlStatementSeparatorString> + <sqlUseFetchSize>50</sqlUseFetchSize> + <tableContentsOutputClassName>net.sourceforge.squirrel_sql.fw.datasetviewer.DataSetViewerTablePanel</tableContentsOutputClassName> + </sessionProperties> + <showAliasesToolBar>true</showAliasesToolBar> + <showColorIconsInToolbars>true</showColorIconsInToolbars> + <showContentsWhenDragging>false</showContentsWhenDragging> + <showDebugLogMessages>true</showDebugLogMessages> + <showDriversToolBar>true</showDriversToolBar> + <showErrorLogMessages>true</showErrorLogMessages> + <showInfoLogMessages>true</showInfoLogMessages> + <showLoadedDriversOnly>false</showLoadedDriversOnly> + <showMainStatusBar>true</showMainStatusBar> + <showMainToolBar>true</showMainToolBar> + <showPleaseWaitDialog>false</showPleaseWaitDialog> + <showPluginFilesInSplashScreen>false</showPluginFilesInSplashScreen> + <showSessionStartupTimeHint>false</showSessionStartupTimeHint> + <showTabbedStyleHint>true</showTabbedStyleHint> + <showToolTips>true</showToolTips> + <tabbedStyle>true</tabbedStyle> + <updatePreferences Class="net.sourceforge.squirrel_sql.client.preferences.UpdateSettings"> + <enableAutomaticUpdates>false</enableAutomaticUpdates> + <fileSystemUpdatePath/> + <lastUpdateCheckTimeMillis>0</lastUpdateCheckTimeMillis> + <remoteUpdateSite>true</remoteUpdateSite> + <updateCheckFrequency>WEEKLY</updateCheckFrequency> + <updateServer>www.squirrel-sql.net</updateServer> + <updateServerChannel>STABLE</updateServerChannel> + <updateServerPath>updates</updateServerPath> + <updateServerPort>80</updateServerPort> + </updatePreferences> + <useScrollableTabbedPanesForSessionTabs>false</useScrollableTabbedPanesForSessionTabs> + <warnForUnsavedBufferEdits>false</warnForUnsavedBufferEdits> + <warnForUnsavedFileEdits>false</warnForUnsavedFileEdits> + <warnJreJdbcMismatch>false</warnJreJdbcMismatch> + </Bean> +</Beans> Added: trunk/sql12/installer/squirrelsql-other-installer/src/test/resources/user-settings-dir/sql_history.xml =================================================================== --- trunk/sql12/installer/squirrelsql-other-installer/src/test/resources/user-settings-dir/sql_history.xml (rev 0) +++ trunk/sql12/installer/squirrelsql-other-installer/src/test/resources/user-settings-dir/sql_history.xml 2011-03-26 18:00:34 UTC (rev 6210) @@ -0,0 +1,5 @@ +<Beans> + <Bean Class="net.sourceforge.squirrel_sql.client.session.mainpanel.SQLHistory"> + <data Indexed="true"/> + </Bean> +</Beans> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wi...@us...> - 2011-03-26 18:53:20
|
Revision: 6211 http://squirrel-sql.svn.sourceforge.net/squirrel-sql/?rev=6211&view=rev Author: wis775 Date: 2011-03-26 18:53:14 +0000 (Sat, 26 Mar 2011) Log Message: ----------- When editing table cells in a text area, the input field for the file name will be shown in an appropriate size instead of being very small. If the user change the size of the dialog, the input field for the file name will use the extra space. Modified Paths: -------------- trunk/sql12/doc/src/main/resources/changes.txt trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/PopupEditableIOPanel.java Modified: trunk/sql12/doc/src/main/resources/changes.txt =================================================================== --- trunk/sql12/doc/src/main/resources/changes.txt 2011-03-26 18:00:34 UTC (rev 6210) +++ trunk/sql12/doc/src/main/resources/changes.txt 2011-03-26 18:53:14 UTC (rev 6211) @@ -7,6 +7,9 @@ Enhancements: +Editing numeric values: Now, Squirrel has the same behavior for signed values for all different numeric data types. + A minus sign is allowed only at the first position and if the data type is signed. + Hibernate Plugin: Improved display of mapped objects in table cells: Class name, primary key and toString() ist displayed instead of toString() only. @@ -29,6 +32,9 @@ Bug-fixes: +When editing table cells in a text area, the input field for the file name will be shown in an appropriate size + instead of being very small. If the user change the size of the dialog, the input field for the file name will use the extra space. + 3238037: It's impossible to create a foreign key in oracle 10g, if some tables contains a / in their name eg. recycle bins Now, "Press to open logs" shows the current log file by default instead of a random one. Modified: trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/PopupEditableIOPanel.java =================================================================== --- trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/PopupEditableIOPanel.java 2011-03-26 18:00:34 UTC (rev 6210) +++ trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/PopupEditableIOPanel.java 2011-03-26 18:53:14 UTC (rev 6211) @@ -19,6 +19,7 @@ */ import java.awt.BorderLayout; import java.awt.Color; +import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; @@ -234,12 +235,19 @@ // i18n[popupeditableIoPanel.useFile=Use File: ] eiPanel.add(new JLabel(s_stringMgr.getString("popupeditableIoPanel.useFile")), gbc); - - fileNameField = new JTextField(TEMP_FILE_FLAG, 19); + // ensure, that the text field can use the extra space if the user resize the dialog. + gbc.fill = GridBagConstraints.HORIZONTAL; + gbc.weightx=0.5; + fileNameField = new JTextField(TEMP_FILE_FLAG, 17); + Dimension preferredSize = fileNameField.getPreferredSize(); + // ensure, that the text field has a suitable size, even the panel is too small. + fileNameField.setMinimumSize(new Dimension(preferredSize.width/2, preferredSize.height)); gbc.gridx++; + eiPanel.add(fileNameField, gbc); + gbc.fill = GridBagConstraints.NONE;; + gbc.weightx=0.0; - // add button for Brows // i18n[popupeditableIoPanel.browse=Browse] JButton browseButton = new JButton(s_stringMgr.getString("popupeditableIoPanel.browse")); @@ -288,9 +296,16 @@ // make this the same size as the fileNameField externalCommandCombo.setPreferredSize(fileNameField.getPreferredSize()); - + externalCommandCombo.setMinimumSize(fileNameField.getMinimumSize()); + + // ensure, that the text field can use the extra space if the user resize the dialog. + gbc.fill = GridBagConstraints.HORIZONTAL; + gbc.weightx=0.5; eiPanel.add(externalCommandCombo, gbc); - + gbc.fill = GridBagConstraints.NONE;; + gbc.weightx=0.0; + + // add button to execute external command // i18n[popupeditableIoPanel.execute34=Execute] JButton externalCommandButton = new JButton(s_stringMgr.getString("popupeditableIoPanel.execute34")); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <man...@us...> - 2011-03-26 21:17:32
|
Revision: 6214 http://squirrel-sql.svn.sourceforge.net/squirrel-sql/?rev=6214&view=rev Author: manningr Date: 2011-03-26 21:17:26 +0000 (Sat, 26 Mar 2011) Log Message: ----------- Added mocks necessary for further testing of the DB2 plugin classes. Modified Paths: -------------- trunk/sql12/app/src/test/java/net/sourceforge/squirrel_sql/client/plugin/AbstractSessionPluginTest.java trunk/sql12/fw/src/test/java/net/sourceforge/squirrel_sql/fw/util/AbstractExceptionFormatterTest.java trunk/sql12/plugins/db2/src/test/java/net/sourceforge/squirrel_sql/plugins/db2/DB2JCCExceptionFormatterTest.java trunk/sql12/plugins/db2/src/test/java/net/sourceforge/squirrel_sql/plugins/db2/DB2PluginTest.java Added Paths: ----------- trunk/sql12/plugins/db2/src/test/java/com/ trunk/sql12/plugins/db2/src/test/java/com/ibm/ trunk/sql12/plugins/db2/src/test/java/com/ibm/db2/ trunk/sql12/plugins/db2/src/test/java/com/ibm/db2/jcc/ trunk/sql12/plugins/db2/src/test/java/com/ibm/db2/jcc/c/ trunk/sql12/plugins/db2/src/test/java/com/ibm/db2/jcc/c/SqlException.java Modified: trunk/sql12/app/src/test/java/net/sourceforge/squirrel_sql/client/plugin/AbstractSessionPluginTest.java =================================================================== --- trunk/sql12/app/src/test/java/net/sourceforge/squirrel_sql/client/plugin/AbstractSessionPluginTest.java 2011-03-26 21:16:39 UTC (rev 6213) +++ trunk/sql12/app/src/test/java/net/sourceforge/squirrel_sql/client/plugin/AbstractSessionPluginTest.java 2011-03-26 21:17:26 UTC (rev 6214) @@ -21,12 +21,14 @@ import static org.mockito.Mockito.when; import java.sql.Connection; +import java.sql.DatabaseMetaData; import net.sourceforge.squirrel_sql.client.gui.session.SessionInternalFrame; import net.sourceforge.squirrel_sql.client.gui.session.SessionPanel; import net.sourceforge.squirrel_sql.client.session.IObjectTreeAPI; import net.sourceforge.squirrel_sql.client.session.ISQLPanelAPI; import net.sourceforge.squirrel_sql.client.session.ISession; +import net.sourceforge.squirrel_sql.fw.sql.IQueryTokenizer; import net.sourceforge.squirrel_sql.fw.sql.ISQLConnection; import net.sourceforge.squirrel_sql.fw.sql.ISQLDatabaseMetaData; @@ -63,6 +65,12 @@ @Mock protected Connection mockConnection; + @Mock + protected DatabaseMetaData mockDatabaseMetaData; + + @Mock + protected IQueryTokenizer mockQueryTokenizer; + @Before public void setUp() throws Exception { @@ -76,11 +84,14 @@ when(mockSession.getSessionInternalFrame()).thenReturn(mockSessionInternalFrame); when(mockSession.getSessionSheet()).thenReturn(mockSessionPanel); when(mockSession.getSQLConnection()).thenReturn(mockIsqlConnection); + when(mockSession.getQueryTokenizer()).thenReturn(mockQueryTokenizer); when(mockIsqlConnection.getConnection()).thenReturn(mockConnection); when(mockSQLDatabaseMetaData.getDatabaseProductName()).thenReturn(getDatabaseProductName()); when(mockSQLDatabaseMetaData.getDatabaseProductVersion()).thenReturn(getDatabaseProductVersion()); + when(mockSQLDatabaseMetaData.getJDBCMetaData()).thenReturn(mockDatabaseMetaData); when(mockSessionInternalFrame.getObjectTreeAPI()).thenReturn(mockObjectTreeAPI); when(mockSessionPanel.getSQLPaneAPI()).thenReturn(mockPanelAPI); + when(mockQueryTokenizer.getSQLStatementSeparator()).thenReturn(";"); } @Test Modified: trunk/sql12/fw/src/test/java/net/sourceforge/squirrel_sql/fw/util/AbstractExceptionFormatterTest.java =================================================================== --- trunk/sql12/fw/src/test/java/net/sourceforge/squirrel_sql/fw/util/AbstractExceptionFormatterTest.java 2011-03-26 21:16:39 UTC (rev 6213) +++ trunk/sql12/fw/src/test/java/net/sourceforge/squirrel_sql/fw/util/AbstractExceptionFormatterTest.java 2011-03-26 21:17:26 UTC (rev 6214) @@ -31,7 +31,7 @@ public abstract class AbstractExceptionFormatterTest { /** The class that will be tested. See getExceptionFormatterToTest. */ - private ExceptionFormatter classUnderTest = null; + protected ExceptionFormatter classUnderTest = null; /** * Sub-class tests need to implement this and return an instance of ExceptionFormatter to test. Added: trunk/sql12/plugins/db2/src/test/java/com/ibm/db2/jcc/c/SqlException.java =================================================================== --- trunk/sql12/plugins/db2/src/test/java/com/ibm/db2/jcc/c/SqlException.java (rev 0) +++ trunk/sql12/plugins/db2/src/test/java/com/ibm/db2/jcc/c/SqlException.java 2011-03-26 21:17:26 UTC (rev 6214) @@ -0,0 +1,59 @@ +package com.ibm.db2.jcc.c; + +/* + * Copyright (C) 2011 Rob Manning + * man...@us... + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +public class SqlException extends Throwable +{ + + /** + * serialVersionUID + */ + private static final long serialVersionUID = 1L; + + private String message; + private int code; + private int state; + + + public SqlException(String message, int code, int state) { + this.code = code; + this.message = message; + this.state = state; + } + + public Sqlca getSqlca() { + return new Sqlca(); + } + + public class Sqlca { + + public String getMessage() { + return message; + } + + public int getSqlCode() { + return code; + } + + public int getSqlState() { + return state; + } + } +} Modified: trunk/sql12/plugins/db2/src/test/java/net/sourceforge/squirrel_sql/plugins/db2/DB2JCCExceptionFormatterTest.java =================================================================== --- trunk/sql12/plugins/db2/src/test/java/net/sourceforge/squirrel_sql/plugins/db2/DB2JCCExceptionFormatterTest.java 2011-03-26 21:16:39 UTC (rev 6213) +++ trunk/sql12/plugins/db2/src/test/java/net/sourceforge/squirrel_sql/plugins/db2/DB2JCCExceptionFormatterTest.java 2011-03-26 21:17:26 UTC (rev 6214) @@ -1,9 +1,3 @@ -package net.sourceforge.squirrel_sql.plugins.db2; - -import net.sourceforge.squirrel_sql.fw.util.AbstractExceptionFormatterTest; -import net.sourceforge.squirrel_sql.fw.util.ExceptionFormatter; - - /* * Copyright (C) 2010 Rob Manning * man...@us... @@ -23,13 +17,50 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +package net.sourceforge.squirrel_sql.plugins.db2; + +import static org.junit.Assert.assertTrue; +import net.sourceforge.squirrel_sql.fw.util.AbstractExceptionFormatterTest; +import net.sourceforge.squirrel_sql.fw.util.ExceptionFormatter; + +import org.junit.Test; + +import com.ibm.db2.jcc.c.SqlException; + + public class DB2JCCExceptionFormatterTest extends AbstractExceptionFormatterTest { + private static final int TEST_CODE = 222; + private static final int TEST_STATE = 555; + private static final String TEST_MESSAGE = "a Test message"; + + /** + * @see net.sourceforge.squirrel_sql.fw.util.AbstractExceptionFormatterTest#getExceptionFormatterToTest() + */ @Override protected ExceptionFormatter getExceptionFormatterToTest() { return new DB2JCCExceptionFormatter(); } + @Test + public void testFormatsJccException() { + + SqlException testException = new SqlException(TEST_MESSAGE, TEST_CODE, TEST_STATE); + assertTrue(classUnderTest.formatsException(testException)); + } + + @Test + public void testFormatJccException() throws Exception + { + + SqlException testException = new SqlException(TEST_MESSAGE, TEST_CODE, TEST_STATE); + String formattedMessage = classUnderTest.format(testException); + System.err.println("Formatted message = "+formattedMessage); + + assertTrue(formattedMessage.contains(formattedMessage)); + assertTrue(formattedMessage.contains(""+TEST_CODE)); + assertTrue(formattedMessage.contains(""+TEST_STATE)); + } } Modified: trunk/sql12/plugins/db2/src/test/java/net/sourceforge/squirrel_sql/plugins/db2/DB2PluginTest.java =================================================================== --- trunk/sql12/plugins/db2/src/test/java/net/sourceforge/squirrel_sql/plugins/db2/DB2PluginTest.java 2011-03-26 21:16:39 UTC (rev 6213) +++ trunk/sql12/plugins/db2/src/test/java/net/sourceforge/squirrel_sql/plugins/db2/DB2PluginTest.java 2011-03-26 21:17:26 UTC (rev 6214) @@ -18,10 +18,18 @@ */ package net.sourceforge.squirrel_sql.plugins.db2; +import static org.junit.Assert.assertNotNull; +import static org.mockito.Mockito.when; + +import java.sql.SQLException; + import net.sourceforge.squirrel_sql.client.plugin.AbstractSessionPluginTest; import net.sourceforge.squirrel_sql.client.plugin.DatabaseProductVersionData; import net.sourceforge.squirrel_sql.client.plugin.IPlugin; +import net.sourceforge.squirrel_sql.client.plugin.PluginSessionCallback; +import org.junit.Test; + public class DB2PluginTest extends AbstractSessionPluginTest implements DatabaseProductVersionData { @@ -43,4 +51,12 @@ return null; } + @Test + public void testSessionStarted() throws SQLException + { + when(mockDatabaseMetaData.getDriverName()).thenReturn(DB2Plugin.JCC_DRIVER_NAME); + PluginSessionCallback result = ((DB2Plugin) super.classUnderTest).sessionStarted(mockSession); + assertNotNull(result); + } + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wi...@us...> - 2011-03-27 19:58:54
|
Revision: 6219 http://squirrel-sql.svn.sourceforge.net/squirrel-sql/?rev=6219&view=rev Author: wis775 Date: 2011-03-27 19:58:47 +0000 (Sun, 27 Mar 2011) Log Message: ----------- Feature Request 3185630: SQL Panel layout: - Squirrel uses a vertical layout for the SQL Panel. Now, this layout can be changed to horizontal, which might be useful on wide screen displays. This can be configured within the Session Properties and New Session Properties => Tab General => Combo Box: SQL Panel layout - A double click on the divider restores the divider position to the default value. Modified Paths: -------------- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/SQLPanel.java trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/properties/GeneralSessionPropertiesPanel.java trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/properties/SessionProperties.java trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/properties/SessionPropertiesBeanInfo.java trunk/sql12/app/src/main/resources/net/sourceforge/squirrel_sql/client/session/properties/I18NStrings.properties trunk/sql12/doc/src/main/resources/changes.txt Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/SQLPanel.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/SQLPanel.java 2011-03-27 02:04:52 UTC (rev 6218) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/SQLPanel.java 2011-03-27 19:58:47 UTC (rev 6219) @@ -27,6 +27,8 @@ import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.sql.SQLException; @@ -35,13 +37,26 @@ import java.util.List; import java.util.prefs.Preferences; -import javax.swing.*; -import javax.swing.text.JTextComponent; +import javax.swing.Action; +import javax.swing.Box; +import javax.swing.ImageIcon; +import javax.swing.JButton; +import javax.swing.JCheckBox; +import javax.swing.JMenu; +import javax.swing.JMenuItem; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JSplitPane; +import javax.swing.JTabbedPane; +import javax.swing.SwingUtilities; +import javax.swing.Timer; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.event.EventListenerList; +import javax.swing.plaf.SplitPaneUI; +import javax.swing.plaf.basic.BasicSplitPaneUI; import net.sourceforge.squirrel_sql.client.IApplication; import net.sourceforge.squirrel_sql.client.gui.builders.UIFactory; @@ -155,6 +170,7 @@ transient private ISQLPanelAPI _panelAPI; private static final String PREFS_KEY_SPLIT_DIVIDER_LOC = "squirrelSql_sqlPanel_divider_loc"; + private static final String PREFS_KEY_SPLIT_DIVIDER_LOC_HORIZONTAL = "squirrelSql_sqlPanel_divider_loc_horizontal"; /** * true if this panel is within a SessionInternalFrame @@ -404,8 +420,8 @@ if(_hasBeenVisible) { - int dividerLoc = _splitPane.getDividerLocation(); - Preferences.userRoot().putInt(PREFS_KEY_SPLIT_DIVIDER_LOC, dividerLoc); + saveOrientationDependingDividerLocation(); + } _sqlCombo.removeActionListener(_sqlComboListener); @@ -426,6 +442,20 @@ } + /** + * Save the location of the divider depending on the orientation. + * @see #PREFS_KEY_SPLIT_DIVIDER_LOC + * @see #PREFS_KEY_SPLIT_DIVIDER_LOC_HORIZONTAL + */ + private void saveOrientationDependingDividerLocation() { + int dividerLoc = _splitPane.getDividerLocation(); + if(_splitPane.getOrientation() == JSplitPane.VERTICAL_SPLIT){ + Preferences.userRoot().putInt(PREFS_KEY_SPLIT_DIVIDER_LOC, dividerLoc); + }else{ + Preferences.userRoot().putInt(PREFS_KEY_SPLIT_DIVIDER_LOC_HORIZONTAL, dividerLoc); + } + } + private void installSQLEntryPanel(ISQLEntryPanel pnl) { if (pnl == null) @@ -838,7 +868,10 @@ add(pnl, BorderLayout.NORTH); } - createSplitPaneWithHackToSetSplitLocation(); + // TODO Stefan, clean up one of this + createSplitPaneAndSetSplitLocation(); +// createSplitPaneWithHackToSetSplitLocation(); + _splitPane.setOneTouchExpandable(true); installSQLEntryPanel( @@ -867,10 +900,12 @@ }); } + // TODO Stefan, if createSplitPaneAndSetSplitLocation works correctly, remove this. private void createSplitPaneWithHackToSetSplitLocation() { - final int dividerLoc = Preferences.userRoot().getInt(PREFS_KEY_SPLIT_DIVIDER_LOC, 50); - + final int spOrientation = getSession().getProperties().getSqlPanelOrientation(); + final int dividerLoc = calculateDivederLocation(spOrientation, false); + final Timer timer = new Timer(500, new ActionListener() { public void actionPerformed(ActionEvent e) @@ -881,7 +916,7 @@ timer.setRepeats(false); - _splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT) + _splitPane = new JSplitPane(spOrientation) { // @Override // public void setDividerLocation(double proportionalLocation) @@ -923,9 +958,131 @@ timer.restart(); } }); + /* + * Add a PropertyChangeListener for the SessionProperties for changing the orientation + * of the split pane, if the user change the settings. + */ + getSession().getProperties().addPropertyChangeListener(new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + if(SessionProperties.IPropertyNames.SQL_PANEL_ORIENTATION.equals(evt.getPropertyName())){ + saveOrientationDependingDividerLocation(); + _splitPane.setOrientation((Integer) evt.getNewValue()); + _splitPane.setDividerLocation(calculateDivederLocation(_splitPane.getOrientation(), false)); + _splitPane.repaint(); + } + } + }); + + /* + * Add a mouse event listener to the divider, so that we can reset the divider location when a doulbe click + * occurs on the divider. + */ + SplitPaneUI spUI = _splitPane.getUI(); + if (spUI instanceof BasicSplitPaneUI) { + BasicSplitPaneUI bspUI = (BasicSplitPaneUI) spUI; + bspUI.getDivider().addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + if (SwingUtilities.isLeftMouseButton(e) && e.getClickCount() == 2) { + _splitPane.setDividerLocation(calculateDivederLocation(_splitPane.getOrientation(), true)); + } + } + }); + + } + + } + + + private void createSplitPaneAndSetSplitLocation() + { + final int spOrientation = getSession().getProperties().getSqlPanelOrientation(); + _splitPane = new JSplitPane(spOrientation); + + int dividerLoc = calculateDivederLocation(spOrientation, false); + _splitPane.setDividerLocation(dividerLoc); + + /* + * Add a PropertyChangeListener for the SessionProperties for changing the orientation + * of the split pane, if the user change the settings. + */ + getSession().getProperties().addPropertyChangeListener(new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + if(SessionProperties.IPropertyNames.SQL_PANEL_ORIENTATION.equals(evt.getPropertyName())){ + saveOrientationDependingDividerLocation(); + _splitPane.setOrientation((Integer) evt.getNewValue()); + _splitPane.setDividerLocation(calculateDivederLocation(_splitPane.getOrientation(), false)); + _splitPane.repaint(); + } + } + }); + + + /* + * Add a mouse event listener to the divider, so that we can reset the divider location when a doulbe click + * occurs on the divider. + */ + SplitPaneUI spUI = _splitPane.getUI(); + if (spUI instanceof BasicSplitPaneUI) { + BasicSplitPaneUI bspUI = (BasicSplitPaneUI) spUI; + bspUI.getDivider().addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + if (SwingUtilities.isLeftMouseButton(e) && e.getClickCount() == 2) { + _splitPane.setDividerLocation(calculateDivederLocation(_splitPane.getOrientation(), true)); + } + } + }); + + } + } + /** + * Calculates the divider location of the split pane, depending on a orientation. + * @param useDefault TODO + * @see #PREFS_KEY_SPLIT_DIVIDER_LOC + * @see #PREFS_KEY_SPLIT_DIVIDER_LOC_HORIZONTAL + */ + private int calculateDivederLocation(int orientation, boolean useDefault) { + int dividerLoc; + + // TODO Stefan: If createSplitPaneAndSetSplitLocation works, than there is no need for a default dimension, as the panel could not be null. + + /* + * Parent size for calculating the default location. + * If the split pane isnt' initialized, assume a default dimension. + */ + Dimension parentDim; + + if(_splitPane != null){ + parentDim = _splitPane.getSize(); + }else{ + parentDim = new Dimension(500,500); + } + + if(orientation == JSplitPane.VERTICAL_SPLIT){ + int def = parentDim.height-200; + if(useDefault == false){ + dividerLoc = Preferences.userRoot().getInt(PREFS_KEY_SPLIT_DIVIDER_LOC, def); + }else{ + dividerLoc = def; + } + }else{ + int def = parentDim.width/2; + if(useDefault == false){ + dividerLoc = Preferences.userRoot().getInt(PREFS_KEY_SPLIT_DIVIDER_LOC_HORIZONTAL, def); + }else{ + dividerLoc = def; + } + } + return dividerLoc; + + } + public Action getUndoAction() { return _undoHandler.getUndoAction(); Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/properties/GeneralSessionPropertiesPanel.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/properties/GeneralSessionPropertiesPanel.java 2011-03-27 02:04:52 UTC (rev 6218) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/properties/GeneralSessionPropertiesPanel.java 2011-03-27 19:58:47 UTC (rev 6219) @@ -81,6 +81,8 @@ String DATA_TYPE1 = s_stringMgr.getString("generalSessionPropertiesPanel.dataTYpe1"); // i18n[generalSessionPropertiesPanel.dataTYpe2='General Preferences' window under the 'Data Type Controls' tab.] String DATA_TYPE2 = s_stringMgr.getString("generalSessionPropertiesPanel.dataTYpe2"); + + String SQL_PANEL_ORIENTATION = s_stringMgr.getString("generalSessionPropertiesPanel.sqlPanelOrientation"); } private SessionProperties _props; @@ -152,6 +154,7 @@ private OutputTypeCombo _sqlResultsCmb = new OutputTypeCombo(true); private JCheckBox _chkKeepTableLayoutOnRerun = new JCheckBox(); private OutputTypeCombo _tableContentsCmb = new OutputTypeCombo(true); + private SplitPaneOrientationCombo _splitPaneOrientationCmb = new SplitPaneOrientationCombo(); MyPanel() { @@ -223,6 +226,24 @@ _sqlResultsTabPlacementCmb.setSelectedIndex(0); } + int splitPaneOrientation = props.getSqlPanelOrientation(); + + + for (int i = 0, limit = _splitPaneOrientationCmb.getModel().getSize(); i < limit; ++i) + { + SplitPaneOrientation spo = (SplitPaneOrientation)_splitPaneOrientationCmb.getItemAt(i); + if (spo.getValue() == splitPaneOrientation) + { + _splitPaneOrientationCmb.setSelectedIndex(i); + break; + } + } + if (_splitPaneOrientationCmb.getSelectedIndex() == -1) + { + _splitPaneOrientationCmb.setSelectedIndex(0); + } + + _metaDataCmb.selectClassName(props.getMetaDataOutputClassName()); _sqlResultsCmb.selectClassName(props.getSQLResultsOutputClassName()); _chkKeepTableLayoutOnRerun.setSelected(props.getKeepTableLayoutOnRerun()); @@ -248,6 +269,9 @@ tp = (TabPlacement)_sqlResultsTabPlacementCmb.getSelectedItem(); props.setSQLResultsTabPlacement(tp.getValue()); + + SplitPaneOrientation spOrientation = (SplitPaneOrientation) _splitPaneOrientationCmb.getSelectedItem(); + props.setSqlPanelOrientation(spOrientation.getValue()); } private void createGUI() @@ -317,7 +341,17 @@ ++gbc.gridx; gbc.weightx = 0.5; pnl.add(_sqlResultsTabPlacementCmb, gbc); + + gbc.gridx = 0; + ++gbc.gridy; + pnl.add(new JLabel(GeneralSessionPropertiesPanelI18n.SQL_PANEL_ORIENTATION, SwingConstants.RIGHT), gbc); + ++gbc.gridx; + gbc.weightx = 0.5; + gbc.gridwidth=3; + pnl.add(_splitPaneOrientationCmb, gbc); + + return pnl; } @@ -494,4 +528,40 @@ return ((OutputType) getSelectedItem()).getPanelClassName(); } } + + private static final class SplitPaneOrientation + { + static final SplitPaneOrientation HORIZONTAL = new SplitPaneOrientation(s_stringMgr.getString("generalPropertiesPanel.horizontal"), JSplitPane.HORIZONTAL_SPLIT); + static final SplitPaneOrientation VERTICAL = new SplitPaneOrientation(s_stringMgr.getString("generalPropertiesPanel.vertical"), JSplitPane.VERTICAL_SPLIT); + + private final String _name; + private final int _value; + + SplitPaneOrientation(String name, int value) + { + super(); + _name = name; + _value = value; + } + + public String toString() + { + return _name; + } + + int getValue() + { + return _value; + } + } + + private static final class SplitPaneOrientationCombo extends JComboBox + { + SplitPaneOrientationCombo() + { + super(); + addItem(SplitPaneOrientation.VERTICAL); + addItem(SplitPaneOrientation.HORIZONTAL); + } + } } Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/properties/SessionProperties.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/properties/SessionProperties.java 2011-03-27 02:04:52 UTC (rev 6218) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/properties/SessionProperties.java 2011-03-27 19:58:47 UTC (rev 6219) @@ -21,6 +21,7 @@ import java.beans.PropertyChangeListener; import java.io.Serializable; +import javax.swing.JSplitPane; import javax.swing.SwingConstants; import net.sourceforge.squirrel_sql.fw.datasetviewer.DataSetViewerEditableTablePanel; @@ -69,6 +70,7 @@ String LIMIT_SQL_ENTRY_HISTORY_SIZE = "limitSqlEntryHistorySize"; String LOAD_SCHEMAS_CATALOGS = "loadCatalogsSchemas"; String MAIN_TAB_PLACEMENT = "mainTabPlacement"; + String SQL_PANEL_ORIENTATION = "sqlPanelOrientation"; String META_DATA_OUTPUT_CLASS_NAME = "metaDataOutputClassName"; String OBJECT_TAB_PLACEMENT = "objectTabPlacement"; String SQL_ENTRY_HISTORY_SIZE = "sqlEntryHistorySize"; @@ -187,6 +189,12 @@ */ private int _sqlEntryHistorySize = 100; + /** Orientation of the split pane dividing sql entry area from result area + * @see JSplitPane#VERTICAL_SPLIT + * @see JSplitPane#HORIZONTAL_SPLIT + * */ + private int _sqlPanelOrientation = JSplitPane.VERTICAL_SPLIT; + /** Placement of main tabs. See javax.swing.SwingConstants for valid values. */ private int _mainTabPlacement = SwingConstants.TOP; @@ -812,6 +820,25 @@ oldValue, _sqlEntryHistorySize); } + + public int getSqlPanelOrientation() + { + return _sqlPanelOrientation; + } + + public void setSqlPanelOrientation(int value) + { + if (_sqlPanelOrientation != value) + { + final int oldValue = _sqlPanelOrientation; + _sqlPanelOrientation = value; + getPropertyChangeReporter().firePropertyChange( + IPropertyNames.SQL_PANEL_ORIENTATION, + oldValue, _sqlPanelOrientation); + } + } + + public int getMainTabPlacement() { return _mainTabPlacement; Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/properties/SessionPropertiesBeanInfo.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/properties/SessionPropertiesBeanInfo.java 2011-03-27 02:04:52 UTC (rev 6218) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/properties/SessionPropertiesBeanInfo.java 2011-03-27 19:58:47 UTC (rev 6219) @@ -91,6 +91,8 @@ "getSQLExecutionTabPlacement", "setSQLExecutionTabPlacement"), new PropertyDescriptor(IPropNames.SQL_RESULTS_TAB_PLACEMENT, SessionProperties.class, "getSQLResultsTabPlacement", "setSQLResultsTabPlacement"), + new PropertyDescriptor(IPropNames.SQL_PANEL_ORIENTATION, SessionProperties.class, + "getSqlPanelOrientation", "setSqlPanelOrientation"), new PropertyDescriptor(IPropNames.SQL_USE_FETCH_SIZE, SessionProperties.class, "getSQLFetchSize", "setSQLFetchSize"), new PropertyDescriptor(IPropNames.SQL_FETCH_SIZE, SessionProperties.class, Modified: trunk/sql12/app/src/main/resources/net/sourceforge/squirrel_sql/client/session/properties/I18NStrings.properties =================================================================== --- trunk/sql12/app/src/main/resources/net/sourceforge/squirrel_sql/client/session/properties/I18NStrings.properties 2011-03-27 02:04:52 UTC (rev 6218) +++ trunk/sql12/app/src/main/resources/net/sourceforge/squirrel_sql/client/session/properties/I18NStrings.properties 2011-03-27 19:58:47 UTC (rev 6219) @@ -50,6 +50,8 @@ generalPropertiesPanel.right=Right generalPropertiesPanel.rows=rows generalPropertiesPanel.top=Top +generalPropertiesPanel.horizontal=Horizontal +generalPropertiesPanel.vertical=Vertical generalSessionPropertiesPanel.appearance=Appearance generalSessionPropertiesPanel.dataTYpe1=Properties for the individual Data Types may be set in the generalSessionPropertiesPanel.dataTYpe2='General Preferences' window under the 'Data Type Controls' tab. @@ -64,6 +66,7 @@ generalSessionPropertiesPanel.sqlResults=SQL Results: generalSessionPropertiesPanel.tableContents=Table Contents: generalSessionPropertiesPanel.text=Text +generalSessionPropertiesPanel.sqlPanelOrientation=SQL panel layout: sessionObjectTreePropetiesPanel.filters=Filters sessionPropertiesPanel.catalogPrefix=Limit Catalog Objects using these comma-delimited prefixes: sessionPropertiesPanel.limitRowsContents=Contents - Limit rows Modified: trunk/sql12/doc/src/main/resources/changes.txt =================================================================== --- trunk/sql12/doc/src/main/resources/changes.txt 2011-03-27 02:04:52 UTC (rev 6218) +++ trunk/sql12/doc/src/main/resources/changes.txt 2011-03-27 19:58:47 UTC (rev 6219) @@ -7,6 +7,13 @@ Enhancements: +Feature Request 3185630: SQL Panel layout: + - Squirrel uses a vertical layout for the SQL Panel. Now, this layout can be changed to horizontal, + which might be useful on wide screen displays. This can be configured within the + Session Properties and New Session Properties => Tab General => Combo Box: SQL Panel layout + - A double click on the divider restores the divider position to the default value. + + Editing numeric values: Now, Squirrel has the same behavior for signed values for all different numeric data types. A minus sign is allowed only at the first position and if the data type is signed. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ger...@us...> - 2011-03-28 20:42:47
|
Revision: 6220 http://squirrel-sql.svn.sourceforge.net/squirrel-sql/?rev=6220&view=rev Author: gerdwagner Date: 2011-03-28 20:42:37 +0000 (Mon, 28 Mar 2011) Log Message: ----------- Detached result windows now can be rerun Modified Paths: -------------- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/gui/desktopcontainer/TabbedStyleHintController.java trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/resources/SquirrelResources.java trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/ISQLPanelAPI.java trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/SQLPanelAPI.java trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ErrorPanel.java trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ISQLResultExecuter.java trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ResultFrame.java trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ResultTab.java trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/SQLPanel.java trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/SQLResultExecuterPanel.java trunk/sql12/app/src/main/resources/net/sourceforge/squirrel_sql/client/resources/squirrel.properties trunk/sql12/doc/src/main/resources/changes.txt Added Paths: ----------- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ResultFrameListener.java trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ResultTabFactory.java trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/SQLResultExecuterPanelFacade.java Removed Paths: ------------- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/event/IResultTabListener.java trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/event/ResultTabAdapter.java Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/gui/desktopcontainer/TabbedStyleHintController.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/gui/desktopcontainer/TabbedStyleHintController.java 2011-03-27 19:58:47 UTC (rev 6219) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/gui/desktopcontainer/TabbedStyleHintController.java 2011-03-28 20:42:37 UTC (rev 6220) @@ -50,7 +50,7 @@ - _dlg.setSize(350, 180); + _dlg.setSize(350, 250); GUIUtils.centerWithinParent(_dlg); _dlg.setVisible(true); } Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/resources/SquirrelResources.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/resources/SquirrelResources.java 2011-03-27 19:58:47 UTC (rev 6219) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/resources/SquirrelResources.java 2011-03-28 20:42:37 UTC (rev 6220) @@ -79,6 +79,7 @@ String PREV_SCALE = "prevScale"; String NEXT_SCALE = "nextScale"; + String RERUN = "rerun"; } public SquirrelResources(String rsrcBundleBaseName) Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/ISQLPanelAPI.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/ISQLPanelAPI.java 2011-03-27 19:58:47 UTC (rev 6219) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/ISQLPanelAPI.java 2011-03-28 20:42:37 UTC (rev 6220) @@ -22,7 +22,6 @@ import javax.swing.JMenu; import javax.swing.JMenuItem; -import net.sourceforge.squirrel_sql.client.session.event.IResultTabListener; import net.sourceforge.squirrel_sql.client.session.event.ISQLExecutionListener; import net.sourceforge.squirrel_sql.client.session.event.ISQLPanelListener; import net.sourceforge.squirrel_sql.client.session.event.ISQLResultExecuterTabListener; @@ -65,21 +64,8 @@ */ void removeSQLExecutionListener(ISQLExecutionListener lis); - /** - * Add a listener for events in this sessions result tabs. - * - * @param lis The listener. - */ - void addResultTabListener(IResultTabListener lis); /** - * Remove a listener for events in this sessions result tabs. - * - * @param lis The listener. - */ - void removeResultTabListener(IResultTabListener lis); - - /** * Add a listener for events in this SQL Panel. * * @param lis Listener Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/SQLPanelAPI.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/SQLPanelAPI.java 2011-03-27 19:58:47 UTC (rev 6219) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/SQLPanelAPI.java 2011-03-28 20:42:37 UTC (rev 6220) @@ -38,7 +38,6 @@ import net.sourceforge.squirrel_sql.client.preferences.SquirrelPreferences; import net.sourceforge.squirrel_sql.client.resources.SquirrelResources; import net.sourceforge.squirrel_sql.client.session.action.*; -import net.sourceforge.squirrel_sql.client.session.event.IResultTabListener; import net.sourceforge.squirrel_sql.client.session.event.ISQLExecutionListener; import net.sourceforge.squirrel_sql.client.session.event.ISQLPanelListener; import net.sourceforge.squirrel_sql.client.session.event.ISQLResultExecuterTabListener; @@ -331,36 +330,6 @@ } /** - * Add a listener for events in this sessions result tabs. - * - * @param lis The listener. - */ -// JASON: Do we need these? - public synchronized void addResultTabListener(IResultTabListener lis) - { -// if (lis == null) -// { -// throw new IllegalArgumentException("null IResultTabListener passed"); -// } -// _session.getSessionSheet().getSQLPanel().addResultTabListener(lis); - } - - /** - * Remove a listener for events in this sessions result tabs. - * - * @param lis The listener. - */ -// JASON: Do we need these? - public synchronized void removeResultTabListener(IResultTabListener lis) - { -// if (lis == null) -// { -// throw new IllegalArgumentException("null IResultTabListener passed"); -// } -// _session.getSessionSheet().getSQLPanel().removeResultTabListener(lis); - } - - /** * Add a listener for events in this sql panel executer tabs. * * @param lis The listener. Deleted: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/event/IResultTabListener.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/event/IResultTabListener.java 2011-03-27 19:58:47 UTC (rev 6219) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/event/IResultTabListener.java 2011-03-28 20:42:37 UTC (rev 6220) @@ -1,57 +0,0 @@ -package net.sourceforge.squirrel_sql.client.session.event; -/* - * Copyright (C) 2001-2002 Colin Bell - * co...@us... - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -import java.util.EventListener; - -/** - * This listener is called for events to do with the SQL result tabs. - * - * @author <A HREF="mailto:co...@us...">Colin Bell</A> - */ -public interface IResultTabListener extends EventListener -{ - /** - * An SQL results tab has been added to the tabbed folder. - * - * @param evt The event. - */ - void resultTabAdded(ResultTabEvent evt); - - /** - * An SQL results tab has been removed from the tabbed folder. - * - * @param evt The event. - */ - void resultTabRemoved(ResultTabEvent evt); - - /** - * An SQL results tab has been "torn off" from the tabbed folder into - * its own frame. - * - * @param evt The event. - */ - void resultTabTornOff(ResultTabEvent evt); - - /** - * A "torn off" SQL results tab has been returned to the tabbed folder. - * - * @param evt The event. - */ - void tornOffResultTabReturned(ResultTabEvent evt); -} Deleted: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/event/ResultTabAdapter.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/event/ResultTabAdapter.java 2011-03-27 19:58:47 UTC (rev 6219) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/event/ResultTabAdapter.java 2011-03-28 20:42:37 UTC (rev 6220) @@ -1,68 +0,0 @@ -package net.sourceforge.squirrel_sql.client.session.event; -/* - * Copyright (C) 2001 Colin Bell - * co...@us... - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -/** - * An adapter for <TT>IResultTabListener</TT> with empty methods. - * - * @author <A HREF="mailto:co...@us...">Colin Bell</A> - */ -public class ResultTabAdapter implements IResultTabListener -{ - /** - * An SQL results tab has been added to the tabbed folder. - * - * @param evt The event. - */ - public void resultTabAdded(ResultTabEvent evt) - { - // Empty body. - } - - /** - * An SQL results tab has been removed from the tabbed folder. - * - * @param evt The event. - */ - public void resultTabRemoved(ResultTabEvent evt) - { - // Empty body. - } - - /** - * An SQL results tab has been "torn off" from the tabbed folder into - * its own frame. - * - * @param evt The event. - */ - public void resultTabTornOff(ResultTabEvent evt) - { - // Empty body. - } - - /** - * A "torn off" SQL results tab has been returned to the tabbed folder. - * - * @param evt The event. - */ - public void tornOffResultTabReturned(ResultTabEvent evt) - { - // Empty body. - } -} Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ErrorPanel.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ErrorPanel.java 2011-03-27 19:58:47 UTC (rev 6219) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ErrorPanel.java 2011-03-28 20:42:37 UTC (rev 6220) @@ -25,6 +25,7 @@ private JPopupMenu _popUp = new JPopupMenu(); private JTextArea _txtArea; + private TabButton _btnClose; public ErrorPanel(ISession session, ErrorPanelListener errorPanelListener, ArrayList<String> sqlExecErrorMsgs, String lastExecutedStatement) @@ -153,11 +154,17 @@ gbc = new GridBagConstraints(1,0,1,1,0,0, GridBagConstraints.NORTHEAST, GridBagConstraints.NONE, new Insets(0,0,0,0),0,0 ); - ret.add(new TabButton(new CloseAction(session)), gbc); + _btnClose = new TabButton(new CloseAction(session)); + ret.add(_btnClose, gbc); return ret; } + public void hideCloseButton() + { + _btnClose.setVisible(false); + } + private class CloseAction extends SquirrelAction { CloseAction(ISession session) Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ISQLResultExecuter.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ISQLResultExecuter.java 2011-03-27 19:58:47 UTC (rev 6219) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ISQLResultExecuter.java 2011-03-28 20:42:37 UTC (rev 6220) @@ -28,18 +28,8 @@ */ public interface ISQLResultExecuter { - /** The factory interface that will create ISQLResultExecuter objects - * that will be attached to SQLPanels. The factory is required because - * there will be potentially many sqlpanels for a session each with their own - * set of resultexecuters - */ - public static interface ISQLResultExecuterFactory - { - public ISQLResultExecuter createSQLResultExecuter(ISession session, - ISQLPanelAPI sqlpanel); - } - /** Returns the title of this executor.*/ + /** Returns the title of this executor.*/ public String getTitle(); public JComponent getComponent(); Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ResultFrame.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ResultFrame.java 2011-03-27 19:58:47 UTC (rev 6219) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ResultFrame.java 2011-03-28 20:42:37 UTC (rev 6220) @@ -21,11 +21,16 @@ */ import net.sourceforge.squirrel_sql.client.IApplication; +import net.sourceforge.squirrel_sql.client.gui.desktopcontainer.DialogWidget; import net.sourceforge.squirrel_sql.client.gui.desktopcontainer.SessionDialogWidget; -import net.sourceforge.squirrel_sql.client.gui.desktopcontainer.DesktopContainerFactory; -import net.sourceforge.squirrel_sql.client.gui.desktopcontainer.DesktopStyle; +import net.sourceforge.squirrel_sql.client.resources.SquirrelResources; import net.sourceforge.squirrel_sql.client.session.ISession; +import net.sourceforge.squirrel_sql.client.session.SQLExecutionInfo; import net.sourceforge.squirrel_sql.client.session.action.ReturnResultTabAction; +import net.sourceforge.squirrel_sql.client.session.event.ISQLExecutionListener; +import net.sourceforge.squirrel_sql.fw.datasetviewer.IDataSetUpdateableTableModel; +import net.sourceforge.squirrel_sql.fw.datasetviewer.ResultSetDataSet; +import net.sourceforge.squirrel_sql.fw.datasetviewer.ResultSetMetaDataDataSet; import net.sourceforge.squirrel_sql.fw.util.StringManager; import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory; import net.sourceforge.squirrel_sql.fw.util.log.ILogger; @@ -35,6 +40,8 @@ import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.util.ArrayList; + /** * JASON: Rename to ResultInternalFrame * Torn off frame that contains SQL results. @@ -46,69 +53,232 @@ /** Logger for this class. */ private static ILogger s_log = LoggerController.createLogger(ResultFrame.class); - private static final StringManager s_stringMgr = - StringManagerFactory.getStringManager(ResultFrame.class); + private static final StringManager s_stringMgr = StringManagerFactory.getStringManager(ResultFrame.class); + private ISession _session; /** SQL Results. */ private IResultTab _tab; + private ResultTabFactory _resultTabFactory; + private ResultFrameListener _resultFrameListener; + private JButton _btnReturnToTab; private JCheckBox _chkOnTop; + private JButton _btnReRun; + private JPanel _centerPanel; /** * Ctor. * + * + * + * + * * @param session Current session. * @param tab SQL results tab. * - * @throws IllegalArgumentException + * @param resultTabFactory + * @param resultFrameListener + *@param isOnRerun @throws IllegalArgumentException * If a <TT>null</TT> <TT>ISession</TT> or * <TT>ResultTab</TT> passed. */ - public ResultFrame(ISession session, IResultTab tab) + public ResultFrame(final ISession session, IResultTab tab, ResultTabFactory resultTabFactory, ResultFrameListener resultFrameListener, boolean checkStayOnTop, boolean isOnRerun) { super(getFrameTitle(session, tab), true, true, true, true, session); + _session = session; _tab = tab; + _resultTabFactory = resultTabFactory; + _resultFrameListener = resultFrameListener; setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); - final Container cont = getContentPane(); - cont.setLayout(new BorderLayout()); + getContentPane().setLayout(new BorderLayout()); final IApplication app = session.getApplication(); + getContentPane().add(createButtonPanel(session, app, checkStayOnTop), BorderLayout.NORTH); + _centerPanel = new JPanel(new GridLayout(1,1)); + getContentPane().add(_centerPanel, BorderLayout.CENTER); + _centerPanel.add(_tab.getOutputComponent()); + + _chkOnTop.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + onStayOnTopChanged(); + } + }); + + _btnReRun.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + onRerun(); + } + }); + + if (false == isOnRerun) + { + showFrame(this, false); + } + } + + private void onRerun() + { + _btnReturnToTab.setEnabled(false); + _btnReRun.setEnabled(false); + _centerPanel.removeAll(); + new SQLExecutionHandler(_tab, _session, _tab.getSqlString(), createSQLExecutionHandlerListener(), new ISQLExecutionListener[0]); + } + + private ISQLExecutionHandlerListener createSQLExecutionHandlerListener() + { + return new ISQLExecutionHandlerListener() + { + @Override + public void addResultsTab(SQLExecutionInfo info, ResultSetDataSet rsds, ResultSetMetaDataDataSet rsmdds, IDataSetUpdateableTableModel creator, IResultTab resultTabToReplace) + { + onAddResultsTab(info, rsds, rsmdds, creator, resultTabToReplace); + } + + @Override + public void removeCancelPanel(CancelPanelCtrl cancelPanelCtrl, IResultTab resultTabToReplace) + { + onRemoveCancelPanel(cancelPanelCtrl, resultTabToReplace); + } + + @Override + public void setCancelPanel(CancelPanelCtrl cancelPanelCtrl) + { + onSetCancelPanel(cancelPanelCtrl); + } + + @Override + public void displayErrors(ArrayList<String> sqlExecErrorMsgs, String lastExecutedStatement) + { + onDisplayErrors(sqlExecErrorMsgs, lastExecutedStatement); + } + }; + } + + private void onDisplayErrors(final ArrayList<String> sqlExecErrorMsgs, final String lastExecutedStatement) + { + SwingUtilities.invokeLater(new Runnable() + { + public void run() + { + _centerPanel.removeAll(); + ErrorPanel errorPanel = _resultTabFactory.createErrorPanel(sqlExecErrorMsgs, lastExecutedStatement); + errorPanel.hideCloseButton(); + _centerPanel.add(errorPanel); + _btnReRun.setEnabled(true); + } + }); + } + + private void onSetCancelPanel(final CancelPanelCtrl cancelPanelCtrl) + { + SwingUtilities.invokeLater(new Runnable() + { + public void run() + { + _centerPanel.removeAll(); + _centerPanel.add(cancelPanelCtrl.getPanel(), BorderLayout.CENTER); + } + }); + } + + private void onRemoveCancelPanel(CancelPanelCtrl cancelPanelCtrl, IResultTab resultTabToReplace) + { + SwingUtilities.invokeLater(new Runnable() + { + public void run() + { + _centerPanel.removeAll(); + } + }); + } + + private void onAddResultsTab(final SQLExecutionInfo info, final ResultSetDataSet rsds, final ResultSetMetaDataDataSet rsmdds, final IDataSetUpdateableTableModel creator, IResultTab resultTabToReplace) + { + SwingUtilities.invokeLater(new Runnable() + { + public void run() + { + try + { + _centerPanel.removeAll(); + ResultTab tab = _resultTabFactory.createResultTab(info, creator, rsds, rsmdds); + ResultFrame frame = new ResultFrame(_session, tab, _resultTabFactory, _resultFrameListener, _chkOnTop.isSelected(), true); + showFrame(frame, true); + setVisible(false); + dispose(); + + _resultFrameListener.frameReplaced(ResultFrame.this, frame); + } + catch (Throwable t) + { + _session.showErrorMessage(t); + } + } + }); + } + + private void showFrame(ResultFrame frame, boolean isOnRerun) + { + _session.getApplication().getMainFrame().addWidget(frame); + if (isOnRerun) + { + frame.setBounds(getBounds()); + } + else + { + frame.pack(); + DialogWidget.centerWithinDesktop(frame); + } + + frame.setVisible(true); + frame.toFront(); + frame.requestFocus(); + } + + private JPanel createButtonPanel(ISession session, IApplication app, boolean checkStayOnTop) + { JPanel pnlButtons = new JPanel(new GridBagLayout()); GridBagConstraints gbc; - JButton rtnBtn = new JButton(new ReturnResultTabAction(app, this)); + _btnReturnToTab = new JButton(new ReturnResultTabAction(app, this)); gbc = new GridBagConstraints(0,0,1,1,0,0,GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(0,5,0,5), 0,0); - pnlButtons.add(rtnBtn, gbc); + pnlButtons.add(_btnReturnToTab, gbc); // i18n[resultFrame.stayOnTop=Stay on top] _chkOnTop = new JCheckBox(s_stringMgr.getString("resultFrame.stayOnTop")); gbc = new GridBagConstraints(1,0,1,1,0,0,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0,5,0,5), 0,0); pnlButtons.add(_chkOnTop, gbc); - _chkOnTop.setSelected(true); + _chkOnTop.setSelected(checkStayOnTop); + initLayer(); _chkOnTop.setVisible(session.getApplication().getDesktopStyle().supportsLayers()); - _chkOnTop.addActionListener(new ActionListener() - { - public void actionPerformed(ActionEvent e) - { - onStayOnTopChanged(); - } - }); - - gbc = new GridBagConstraints(2,0,1,1,1,0,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0,5,0,5), 0,0); + gbc = new GridBagConstraints(2,0,1,1,1,0,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0,5,0,5), 0,0); pnlButtons.add(new JPanel(), gbc); + ImageIcon icon = session.getApplication().getResources().getIcon(SquirrelResources.IImageNames.RERUN); + _btnReRun = new JButton(icon); + gbc = new GridBagConstraints(3,0,1,1,0,0,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0,5,0,5), 0,0); + pnlButtons.add(_btnReRun, gbc); - - cont.add(pnlButtons, BorderLayout.NORTH); - cont.add(tab.getOutputComponent(), BorderLayout.CENTER); + return pnlButtons; } private void onStayOnTopChanged() { + initLayer(); + toFront(); + } + + private void initLayer() + { if(_chkOnTop.isSelected()) { setLayer(JLayeredPane.PALETTE_LAYER.intValue()); @@ -117,10 +287,6 @@ { setLayer(JLayeredPane.DEFAULT_LAYER.intValue()); } - - // Needs to be done in both cases because if the window goes back to - // the default layer it goes back behind all other windows too. - toFront(); } /** Added: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ResultFrameListener.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ResultFrameListener.java (rev 0) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ResultFrameListener.java 2011-03-28 20:42:37 UTC (rev 6220) @@ -0,0 +1,6 @@ +package net.sourceforge.squirrel_sql.client.session.mainpanel; + +public interface ResultFrameListener +{ + void frameReplaced(ResultFrame oldFrame, ResultFrame newFrame); +} Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ResultTab.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ResultTab.java 2011-03-27 19:58:47 UTC (rev 6219) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ResultTab.java 2011-03-28 20:42:37 UTC (rev 6220) @@ -32,6 +32,8 @@ import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.text.NumberFormat; +import java.util.ArrayList; +import java.util.HashMap; import javax.swing.*; import javax.swing.event.ChangeEvent; @@ -84,7 +86,7 @@ private JTabbedPane _tp; /** <TT>SQLExecuterPanel</TT> that this tab is showing results for. */ - private SQLResultExecuterPanel _sqlPanel; + private SQLResultExecuterPanelFacade _sqlResultExecuterPanelFacade; /** Label shows the current SQL script. */ private JLabel _currentSqlLbl = new JLabel(); @@ -113,7 +115,7 @@ * Ctor. * * @param session Current session. - * @param sqlPanel <TT>SQLResultExecuterPanel</TT> that this tab is + * @param sqlResultExecuterPanelFacade <TT>SQLResultExecuterPanel</TT> that this tab is * showing results for. * @param id Unique ID for this object. * @@ -121,7 +123,7 @@ * Thrown if a <TT>null</TT> <TT>ISession</TT>, * <<TT>SQLResultExecuterPanel</TT> or <TT>IIdentifier</TT> passed. */ - public ResultTab(ISession session, SQLResultExecuterPanel sqlPanel, + public ResultTab(ISession session, SQLResultExecuterPanelFacade sqlResultExecuterPanelFacade, IIdentifier id, SQLExecutionInfo exInfo, IDataSetUpdateableTableModel creator, ResultTabListener resultTabListener) throws IllegalArgumentException @@ -132,7 +134,7 @@ { throw new IllegalArgumentException("Null ISession passed"); } - if (sqlPanel == null) + if (sqlResultExecuterPanelFacade == null) { throw new IllegalArgumentException("Null SQLPanel passed"); } @@ -142,7 +144,7 @@ } _session = session; - _sqlPanel = sqlPanel; + _sqlResultExecuterPanelFacade = sqlResultExecuterPanelFacade; _id = id; init(creator, exInfo); @@ -326,7 +328,7 @@ public void closeTab() { add(_tp, BorderLayout.CENTER); - _sqlPanel.closeResultTab(this); + _sqlResultExecuterPanelFacade.closeResultTab(this); } /** @@ -335,12 +337,9 @@ public void returnToTabbedPane() { add(_tp, BorderLayout.CENTER); - _sqlPanel.returnToTabbedPane(this); + _sqlResultExecuterPanelFacade.returnToTabbedPane(this); } - /** - * @see net.sourceforge.squirrel_sql.client.session.mainpanel.IResultTab#getOutputComponent() - */ public Component getOutputComponent() { return _tp; @@ -510,7 +509,7 @@ public void actionPerformed(ActionEvent evt) { - _sqlPanel.createSQLResultFrame(ResultTab.this); + _sqlResultExecuterPanelFacade.createSQLResultFrame(ResultTab.this); } } @@ -550,9 +549,8 @@ private static class QueryInfoPanel extends JPanel { - private static final long serialVersionUID = 2124193091025851544L; - - private MultipleLineLabel _queryLbl = new MultipleLineLabel(); + + private MultipleLineLabel _queryLbl = new MultipleLineLabel(); private JLabel _rowCountLbl = new JLabel(); private JLabel _executedLbl = new JLabel(); private JLabel _elapsedLbl = new JLabel(); Added: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ResultTabFactory.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ResultTabFactory.java (rev 0) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ResultTabFactory.java 2011-03-28 20:42:37 UTC (rev 6220) @@ -0,0 +1,56 @@ +package net.sourceforge.squirrel_sql.client.session.mainpanel; + +import net.sourceforge.squirrel_sql.client.session.ISession; +import net.sourceforge.squirrel_sql.client.session.SQLExecutionInfo; +import net.sourceforge.squirrel_sql.fw.datasetviewer.DataSetException; +import net.sourceforge.squirrel_sql.fw.datasetviewer.IDataSetUpdateableTableModel; +import net.sourceforge.squirrel_sql.fw.datasetviewer.ResultSetDataSet; +import net.sourceforge.squirrel_sql.fw.datasetviewer.ResultSetMetaDataDataSet; +import net.sourceforge.squirrel_sql.fw.id.IntegerIdentifierFactory; + +import java.util.ArrayList; + +public class ResultTabFactory +{ + private IntegerIdentifierFactory _idFactory = new IntegerIdentifierFactory(); + private ISession _session; + private SQLResultExecuterPanelFacade _sqlResultExecuterPanelFacade; + + public ResultTabFactory(ISession session, SQLResultExecuterPanelFacade sqlResultExecuterPanelFacade) + { + _session = session; + _sqlResultExecuterPanelFacade = sqlResultExecuterPanelFacade; + } + + public ResultTab createResultTab(SQLExecutionInfo exInfo, IDataSetUpdateableTableModel creator, ResultSetDataSet rsds, ResultSetMetaDataDataSet mdds) throws DataSetException + { + final ResultTabListener resultTabListener = new ResultTabListener() + { + public void rerunSQL(String sql, IResultTab resultTab) + { + _sqlResultExecuterPanelFacade.rerunSQL(sql, resultTab); + } + }; + + + ResultTab tab = new ResultTab(_session, _sqlResultExecuterPanelFacade, _idFactory.createIdentifier(), exInfo, creator, resultTabListener); + tab.showResults(rsds, mdds, exInfo); + return tab; + } + + public ErrorPanel createErrorPanel(ArrayList<String> sqlExecErrorMsgs, String lastExecutedStatement) + { + ErrorPanelListener errorPanelListener = new ErrorPanelListener() + { + @Override + public void removeErrorPanel(ErrorPanel errorPanel) + { + _sqlResultExecuterPanelFacade.removeErrorPanel(errorPanel); + } + }; + + return new ErrorPanel(_session, errorPanelListener, sqlExecErrorMsgs, lastExecutedStatement); + } + + +} Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/SQLPanel.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/SQLPanel.java 2011-03-27 19:58:47 UTC (rev 6219) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/SQLPanel.java 2011-03-28 20:42:37 UTC (rev 6220) @@ -66,14 +66,7 @@ import net.sourceforge.squirrel_sql.client.session.ISession; import net.sourceforge.squirrel_sql.client.session.SQLPanelAPI; import net.sourceforge.squirrel_sql.client.session.action.OpenSqlHistoryAction; -import net.sourceforge.squirrel_sql.client.session.event.IResultTabListener; -import net.sourceforge.squirrel_sql.client.session.event.ISQLExecutionListener; -import net.sourceforge.squirrel_sql.client.session.event.ISQLPanelListener; -import net.sourceforge.squirrel_sql.client.session.event.ISQLResultExecuterTabListener; -import net.sourceforge.squirrel_sql.client.session.event.ResultTabEvent; -import net.sourceforge.squirrel_sql.client.session.event.SQLExecutionAdapter; -import net.sourceforge.squirrel_sql.client.session.event.SQLPanelEvent; -import net.sourceforge.squirrel_sql.client.session.event.SQLResultExecuterTabEvent; +import net.sourceforge.squirrel_sql.client.session.event.*; import net.sourceforge.squirrel_sql.client.session.properties.SessionProperties; import net.sourceforge.squirrel_sql.fw.gui.FontInfo; import net.sourceforge.squirrel_sql.fw.gui.IntegerField; @@ -83,6 +76,19 @@ import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory; import net.sourceforge.squirrel_sql.fw.util.log.ILogger; import net.sourceforge.squirrel_sql.fw.util.log.LoggerController; + +import javax.swing.*; +import javax.swing.event.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.prefs.Preferences; /** * This is the panel where SQL scripts can be entered and executed. * @@ -613,50 +619,6 @@ } } - @SuppressWarnings("unused") - private void fireTabTornOffEvent(IResultTab tab) - { - // Guaranteed to be non-null. - Object[] listeners = _listeners.getListenerList(); - // Process the listeners last to first, notifying - // those that are interested in this event. - ResultTabEvent evt = null; - for (int i = listeners.length - 2; i >= 0; i -= 2) - { - if (listeners[i] == IResultTabListener.class) - { - // Lazily create the event: - if (evt == null) - { - evt = new ResultTabEvent(_session, tab); - } - ((IResultTabListener) listeners[i + 1]).resultTabTornOff(evt); - } - } - } - - @SuppressWarnings("unused") - private void fireTornOffResultTabReturned(IResultTab tab) - { - // Guaranteed to be non-null. - Object[] listeners = _listeners.getListenerList(); - // Process the listeners last to first, notifying - // those that are interested in this event. - ResultTabEvent evt = null; - for (int i = listeners.length - 2; i >= 0; i -= 2) - { - if (listeners[i] == IResultTabListener.class) - { - // Lazily create the event: - if (evt == null) - { - evt = new ResultTabEvent(_session, tab); - } - ((IResultTabListener) listeners[i + 1]).tornOffResultTabReturned(evt); - } - } - } - private void fireExecuterTabAdded(ISQLResultExecuter exec) { // Guaranteed to be non-null. Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/SQLResultExecuterPanel.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/SQLResultExecuterPanel.java 2011-03-27 19:58:47 UTC (rev 6219) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/SQLResultExecuterPanel.java 2011-03-28 20:42:37 UTC (rev 6220) @@ -17,34 +17,10 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -import java.awt.BorderLayout; -import java.awt.Component; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.sql.SQLException; -import java.util.*; -import javax.swing.Action; -import javax.swing.ImageIcon; -import javax.swing.JComponent; -import javax.swing.JLayeredPane; -import javax.swing.JMenuItem; -import javax.swing.JOptionPane; -import javax.swing.JPanel; -import javax.swing.JPopupMenu; -import javax.swing.JTabbedPane; -import javax.swing.KeyStroke; -import javax.swing.SwingUtilities; -import javax.swing.event.EventListenerList; - import net.sourceforge.squirrel_sql.client.action.ActionCollection; import net.sourceforge.squirrel_sql.client.gui.builders.UIFactory; import net.sourceforge.squirrel_sql.client.gui.desktopcontainer.DialogWidget; -import net.sourceforge.squirrel_sql.client.preferences.SquirrelPreferences; import net.sourceforge.squirrel_sql.client.session.ISQLEntryPanel; import net.sourceforge.squirrel_sql.client.session.ISession; import net.sourceforge.squirrel_sql.client.session.SQLExecutionInfo; @@ -52,19 +28,27 @@ import net.sourceforge.squirrel_sql.client.session.action.CloseAllSQLResultTabsButCurrentAction; import net.sourceforge.squirrel_sql.client.session.action.CloseCurrentSQLResultTabAction; import net.sourceforge.squirrel_sql.client.session.action.ToggleCurrentSQLResultTabStickyAction; -import net.sourceforge.squirrel_sql.client.session.event.IResultTabListener; import net.sourceforge.squirrel_sql.client.session.event.ISQLExecutionListener; -import net.sourceforge.squirrel_sql.client.session.event.ResultTabEvent; import net.sourceforge.squirrel_sql.client.session.properties.SessionProperties; import net.sourceforge.squirrel_sql.fw.datasetviewer.*; -import net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.DataTypeClob; -import net.sourceforge.squirrel_sql.fw.id.IntegerIdentifierFactory; import net.sourceforge.squirrel_sql.fw.sql.ISQLConnection; import net.sourceforge.squirrel_sql.fw.util.Resources; import net.sourceforge.squirrel_sql.fw.util.StringManager; import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory; import net.sourceforge.squirrel_sql.fw.util.log.ILogger; import net.sourceforge.squirrel_sql.fw.util.log.LoggerController; + +import javax.swing.*; +import javax.swing.event.EventListenerList; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.sql.SQLException; +import java.util.ArrayList; /** * This is the panel where SQL scripts are executed and results presented. * @@ -103,11 +87,9 @@ /** Listeners */ private EventListenerList _listeners = new EventListenerList(); - /** Factory for generating unique IDs for new <TT>ResultTab</TT> objects. */ - private IntegerIdentifierFactory _idFactory = new IntegerIdentifierFactory(); + private ResultTabFactory _resultTabFactory; + private IResultTab _stickyTab; - - private SquirrelPreferences _prefs = null; /** * Ctor. @@ -119,13 +101,49 @@ */ public SQLResultExecuterPanel(ISession session) { - super(); + _resultTabFactory = new ResultTabFactory(session, createSQLResultExecuterPanelFacade()); setSession(session); createGUI(); propertiesHaveChanged(null); } - public String getTitle() + private SQLResultExecuterPanelFacade createSQLResultExecuterPanelFacade() + { + return new SQLResultExecuterPanelFacade() + { + @Override + public void closeResultTab(ResultTab resultTab) + { + SQLResultExecuterPanel.this.closeResultTab(resultTab); + } + + @Override + public void returnToTabbedPane(ResultTab resultTab) + { + SQLResultExecuterPanel.this.returnToTabbedPane(resultTab); + } + + @Override + public void createSQLResultFrame(ResultTab resultTab) + { + SQLResultExecuterPanel.this.createSQLResultFrame(resultTab); + } + + @Override + public void rerunSQL(String sql, IResultTab resultTab) + { + SQLResultExecuterPanel.this.rerunSQL(sql, resultTab); + } + + @Override + public void removeErrorPanel(ErrorPanel errorPanel) + { + SQLResultExecuterPanel.this.removeErrorPanel(errorPanel); + } + }; + } + + public String getTitle() { // i18n[SQLResultExecuterPanel.title=Results] return s_stringMgr.getString("SQLResultExecuterPanel.title"); @@ -152,7 +170,6 @@ } sessionClosing(); _session = session; - _prefs = _session.getApplication().getSquirrelPreferences(); _propsListener = new MyPropertiesListener(); _session.getProperties().addPropertyChangeListener(_propsListener); } @@ -197,40 +214,7 @@ _listeners.remove(ISQLExecutionListener.class, lis); } - /** - * Add a listener listening for events on result tabs. - * - * @param lis Listener - * - * @throws IllegalArgumentException - * If a null <TT>IResultTabListener</TT> passed. - */ - public synchronized void addResultTabListener(IResultTabListener lis) - { - if (lis == null) - { - throw new IllegalArgumentException("IResultTabListener == null"); - } - _listeners.add(IResultTabListener.class, lis); - } - /** - * Remove a listener listening for events on result tabs. - * - * @param lis Listener - * - * @throws IllegalArgumentException - * If a null <TT>IResultTabListener</TT> passed. - */ - public synchronized void removeResultTabListener(IResultTabListener lis) - { - if (lis == null) - { - throw new IllegalArgumentException("IResultTabListener == null"); - } - _listeners.remove(IResultTabListener.class, lis); - } - public void execute(ISQLEntryPanel sqlPanel) { removeErrorPanels(); @@ -343,22 +327,19 @@ private void showErrorPanel(ArrayList<String> sqlExecErrorMsgs, String lastExecutedStatement) { - ErrorPanelListener errorPanelListener = new ErrorPanelListener() - { - @Override - public void removeErrorPanel(ErrorPanel errorPanel) - { - _tabbedExecutionsPanel.remove(errorPanel); - } - }; - - ErrorPanel errorPanel = new ErrorPanel(_session, errorPanelListener, sqlExecErrorMsgs, lastExecutedStatement); + ErrorPanel errorPanel = _resultTabFactory.createErrorPanel(sqlExecErrorMsgs, lastExecutedStatement); _tabbedExecutionsPanel.add(s_stringMgr.getString("SQLResultExecuterPanel.ErrorTabHeader"), errorPanel); _tabbedExecutionsPanel.setSelectedComponent(errorPanel); } - private void onRerunSQL(String sql, IResultTab resultTab) + + private void removeErrorPanel(ErrorPanel errorPanel) { + _tabbedExecutionsPanel.remove(errorPanel); + } + + private void rerunSQL(String sql, IResultTab resultTab) + { new SQLExecutionHandler(resultTab, _session, sql, createSQLExecutionHandlerListener(), new ISQLExecutionListener[0]); } @@ -539,7 +520,7 @@ * @throws IllegalArgumentException * Thrown if a <TT>null</TT> <TT>ResultTab</TT> passed. */ - public void closeResultTab(ResultTab tab) + private void closeResultTab(ResultTab tab) { if (tab == null) { @@ -547,10 +528,9 @@ } s_log .debug("SQLPanel.closeResultTab(" + tab.getIdentifier().toString() - + ")"); + + ")"); tab.clear(); _tabbedExecutionsPanel.remove(tab); - fireTabRemovedEvent(tab); } /** @@ -587,91 +567,7 @@ } } - protected void fireTabAddedEvent(IResultTab tab) - { - // Guaranteed to be non-null. - Object[] listeners = _listeners.getListenerList(); - // Process the listeners last to first, notifying - // those that are interested in this event. - ResultTabEvent evt = null; - for (int i = listeners.length - 2; i >= 0; i -= 2) - { - if (listeners[i] == IResultTabListener.class) - { - // Lazily create the event: - if (evt == null) - { - evt = new ResultTabEvent(_session, tab); - } - ((IResultTabListener)listeners[i + 1]).resultTabAdded(evt); - } - } - } - protected void fireTabRemovedEvent(IResultTab tab) - { - // Guaranteed to be non-null. - Object[] listeners = _listeners.getListenerList(); - // Process the listeners last to first, notifying - // those that are interested in this event. - ResultTabEvent evt = null; - for (int i = listeners.length - 2; i >= 0; i -= 2) - { - if (listeners[i] == IResultTabListener.class) - { - // Lazily create the event: - if (evt == null) - { - evt = new ResultTabEvent(_session, tab); - } - ((IResultTabListener)listeners[i + 1]).resultTabRemoved(evt); - } - } - } - - protected void fireTabTornOffEvent(IResultTab tab) - { - // Guaranteed to be non-null. - Object[] listeners = _listeners.getListenerList(); - // Process the listeners last to first, notifying - // those that are interested in this event. - ResultTabEvent evt = null; - for (int i = listeners.length - 2; i >= 0; i -= 2) - { - if (listeners[i] == IResultTabListener.class) - { - // Lazily create the event: - if (evt == null) - { - evt = new ResultTabEvent(_session, tab); - } - ((IResultTabListener)listeners[i + 1]).resultTabTornOff(evt); - } - } - } - - protected void fireTornOffResultTabReturned(IResultTab tab) - { - // Guaranteed to be non-null. - Object[] listeners = _listeners.getListenerList(); - // Process the listeners last to first, notifying - // those that are interested in this event. - ResultTabEvent evt = null; - for (int i = listeners.length - 2; i >= 0; i -= 2) - { - if (listeners[i] == IResultTabListener.class) - { - // Lazily create the event: - if (evt == null) - { - evt = new ResultTabEvent(_session, tab); - } - ((IResultTabListener)listeners[i + 1]) - .tornOffResultTabReturned(evt); - } - } - } - protected String fireSQLToBeExecutedEvent(String sql) { // Guaranteed to be non-null. @@ -703,7 +599,7 @@ * @throws IllegalArgumentException * Thrown if a <TT>null</TT> <TT>ResultTab</TT> passed. */ - public void createSQLResultFrame(ResultTab tab) + private void createSQLResultFrame(ResultTab tab) { if (tab == null) { @@ -712,28 +608,26 @@ s_log.debug("SQLPanel.createSQLResultFrame(" + tab.getIdentifier().toString() + ")"); _tabbedExecutionsPanel.remove(tab); - ResultFrame frame = new ResultFrame(_session, tab); - _sqlResultFrames.add(frame); - _session.getApplication().getMainFrame().addWidget(frame); - frame.setLayer(JLayeredPane.PALETTE_LAYER); - fireTabTornOffEvent(tab); - - if (false == _session.getApplication().getDesktopStyle().supportsLayers()) + ResultFrameListener resultFrameListener = new ResultFrameListener() { - frame.pack(); - DialogWidget.centerWithinDesktop(frame); - } - frame.setVisible(true); + @Override + public void frameReplaced(ResultFrame oldFrame, ResultFrame newFrame) + { + onFrameReplaced(oldFrame, newFrame); + } + }; - // There used to be a frame.pack() here but it resized the frame - // to be very wide if text output was used. - frame.toFront(); - frame.requestFocus(); + ResultFrame frame = new ResultFrame(_session, tab, _resultTabFactory, resultFrameListener,true, false); + _sqlResultFrames.add(frame); + } - + private void onFrameReplaced(ResultFrame oldFrame, ResultFrame newFrame) + { + _sqlResultFrames.remove(oldFrame); + _sqlResultFrames.add(newFrame); } /** @@ -744,7 +638,7 @@ * @throws IllegalArgumentException * Thrown if a <TT>null</TT> <TT>ResultTab</TT> passed. */ - public void returnToTabbedPane(ResultTab tab) + private void returnToTabbedPane(ResultTab tab) { if (tab == null) { @@ -765,7 +659,6 @@ addResultsTab(tab, null); - fireTornOffResultTabReturned(tab); } /** @@ -774,63 +667,23 @@ public IResultTab getSelectedResultTab() { return (IResultTab)_tabbedExecutionsPanel.getSelectedComponent(); } - - /** - * The idea here is to allow the caller to force the result to be re-run, - * potentially altering the output in the case where readFully is true and - * the result previously contained data placeholders (<clob>). This will - * be useful for automating export to CSV/Excel of CLOB data, where it is - * most likely that the user doesn't want to see <clob> in the resultant - * export file. - * - * @param readFully if true, then the configuration will (temporarily) be - * set so that clob data is read and displayed. - */ - public void reRunSelectedResultTab(boolean readFully) { - boolean clobReadOrigVal = DataTypeClob.getReadCompleteClob(); - if (readFully) { - DataTypeClob.setReadCompleteClob(true); - } - IResultTab rt = (IResultTab)_tabbedExecutionsPanel.getSelectedComponent(); - rt.reRunSQL(); - if (readFully) { - DataTypeClob.setReadCompleteClob(clobReadOrigVal); - } - } - private void onAddResultsTab(final SQLExecutionInfo exInfo, + private void onAddResultsTab(final SQLExecutionInfo exInfo, final ResultSetDataSet rsds, final ResultSetMetaDataDataSet mdds, final IDataSetUpdateableTableModel creator, final IResultTab resultTabToReplace) { - final ResultTabListener resultTabListener = new ResultTabListener() - { - public void rerunSQL(String sql, IResultTab resultTab) - { - onRerunSQL(sql, resultTab); - } - }; - - // We are in a thread. Do GUI work on event queque - - - SwingUtilities.invokeLater(new Runnable() { public void run() { try { - ResultTab tab = new ResultTab(_session, SQLResultExecuterPanel.this, _idFactory.createIdentifier(), exInfo, creator, resultTabListener); - s_log.debug("Created new tab " + tab.getIdentifier().toString() - + " for results."); + ResultTab tab = _resultTabFactory.createResultTab(exInfo, creator, rsds, mdds); - tab.showResults(rsds, mdds, exInfo); - addResultsTab(tab, resultTabToReplace); _tabbedExecutionsPanel.setSelectedComponent(tab); - fireTabAddedEvent(tab); } catch (Throwable t) { Added: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/SQLResultExecuterPanelFacade.java =================================================================== --- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/SQLResultExecuterPanelFacade.java (rev 0) +++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/SQLResultExecuterPanelFacade.java 2011-03-28 20:42:37 UTC (rev 6220) @@ -0,0 +1,14 @@ +package net.sourceforge.squirrel_sql.client.session.mainpanel; + +public interface SQLResultExecuterPanelFacade +{ + void closeResultTab(ResultTab resultTab); + + void returnToTabbedPane(ResultTab resultTab); + + void createSQLResultFrame(ResultTab resultTab); + + void rerunSQL(String sql, IResultTab resultTab); + + void removeErrorPanel(ErrorPanel errorPanel); +} Modified: trunk/sql12/app/src/main/resources/net/sourceforge/squirrel_sql/client/resources/squirrel.properties =================================================================== --- trunk/sql12/app/src/main/resources/net/sourceforge/squirrel_sql/client/resources/squirrel.properties 2011-03-27 19:58:47 UTC (rev 6219) +++ trunk/sql12/app/src/main/resources/net/sourceforge/squirrel_sql/client/resources/squirrel.properties 2011-03-28 20:42:37 UTC (rev 6220) @@ -65,6 +65,7 @@ prevScale.image=prev.png nextScale.image=next.png +rerun.image=eclipse/active/run_exc.gif ######## Modified: trunk/sql12/doc/src/main/resources/changes.txt =================================================================== --- trunk/sql12/doc/src/main/resources/changes.txt 2011-03-27 19:58:47 UTC (rev 6219) +++ trunk/sql12/doc/src/main/resources/changes.txt 2011-03-28 20:42:37 UTC (rev 6220) @@ -7,6 +7,8 @@ Enhancements: +Detached result windows now can be rerun. + Feature Request 3185630: SQL Panel layout: - Squirrel uses a vertical layout for the SQL Panel. Now, this layout can be changed to horizontal, which might be useful on wide screen displays. This can be configured within the This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <gui...@us...> - 2011-03-30 21:34:58
|
Revision: 6225 http://squirrel-sql.svn.sourceforge.net/squirrel-sql/?rev=6225&view=rev Author: guido_wojke Date: 2011-03-30 21:34:51 +0000 (Wed, 30 Mar 2011) Log Message: ----------- * added *.iml to svn:ignore * removed illegal dependencies to test-jar for compile scope Modified Paths: -------------- trunk/sql12/app/pom.xml trunk/sql12/plugins/codecompletion/pom.xml trunk/sql12/plugins/dataimport/pom.xml trunk/sql12/plugins/dbcopy/pom.xml trunk/sql12/plugins/dbdiff/pom.xml trunk/sql12/plugins/derby/pom.xml trunk/sql12/plugins/editextras/pom.xml trunk/sql12/plugins/example/pom.xml trunk/sql12/plugins/favs/pom.xml trunk/sql12/plugins/firebird/pom.xml trunk/sql12/plugins/graph/pom.xml trunk/sql12/plugins/h2/pom.xml trunk/sql12/plugins/hibernate/pom.xml trunk/sql12/plugins/i18n/pom.xml trunk/sql12/plugins/informix/pom.xml trunk/sql12/plugins/laf/pom.xml trunk/sql12/plugins/mssql/pom.xml trunk/sql12/plugins/mysql/pom.xml trunk/sql12/plugins/netezza/pom.xml trunk/sql12/plugins/oracle/pom.xml trunk/sql12/plugins/postgres/pom.xml trunk/sql12/plugins/refactoring/pom.xml trunk/sql12/plugins/sessionscript/pom.xml trunk/sql12/plugins/sqlbookmark/pom.xml trunk/sql12/plugins/sqlparam/pom.xml trunk/sql12/plugins/sqlreplace/pom.xml trunk/sql12/plugins/sqlscript/pom.xml trunk/sql12/plugins/sqlval/pom.xml trunk/sql12/plugins/squirrelsql-plugin-archetype/pom.xml trunk/sql12/plugins/squirrelsql-plugin-archetype/src/main/resources/archetype-resources/pom.xml trunk/sql12/plugins/squirrelsql-plugins-parent-pom/pom.xml trunk/sql12/plugins/syntax/pom.xml trunk/sql12/plugins/userscript/pom.xml Property Changed: ---------------- trunk/sql12/ trunk/sql12/app/ trunk/sql12/fw/ trunk/sql12/plugins/ trunk/sql12/plugins/codecompletion/ trunk/sql12/plugins/dataimport/ trunk/sql12/plugins/db2/ trunk/sql12/plugins/dbcopy/ trunk/sql12/plugins/dbdiff/ trunk/sql12/plugins/derby/ trunk/sql12/plugins/editextras/ trunk/sql12/plugins/example/ trunk/sql12/plugins/exportconfig/ trunk/sql12/plugins/favs/ trunk/sql12/plugins/firebird/ trunk/sql12/plugins/firebirdmanager/ trunk/sql12/plugins/graph/ trunk/sql12/plugins/h2/ trunk/sql12/plugins/hibernate/ trunk/sql12/plugins/i18n/ trunk/sql12/plugins/informix/ trunk/sql12/plugins/laf/ trunk/sql12/plugins/macosx/ trunk/sql12/plugins/mssql/ trunk/sql12/plugins/mysql/ trunk/sql12/plugins/netezza/ trunk/sql12/plugins/oracle/ trunk/sql12/plugins/postgres/ trunk/sql12/plugins/refactoring/ trunk/sql12/plugins/sessionscript/ trunk/sql12/plugins/smarttools/ trunk/sql12/plugins/sqlbookmark/ trunk/sql12/plugins/sqlparam/ trunk/sql12/plugins/sqlreplace/ trunk/sql12/plugins/sqlscript/ trunk/sql12/plugins/sqlval/ trunk/sql12/plugins/squirrelsql-plugin-archetype/ trunk/sql12/plugins/squirrelsql-plugins-assembly-descriptor/ trunk/sql12/plugins/squirrelsql-plugins-parent-pom/ trunk/sql12/plugins/sybase/ trunk/sql12/plugins/syntax/ trunk/sql12/plugins/userscript/ Property changes on: trunk/sql12 ___________________________________________________________________ Modified: svn:ignore - target .project .classpath .settings + *.iml *.ipr *.iws .classpath .project .settings target Property changes on: trunk/sql12/app ___________________________________________________________________ Modified: svn:ignore - target .settings .project .classpath update + target .settings .project .classpath update *.iml Modified: trunk/sql12/app/pom.xml =================================================================== --- trunk/sql12/app/pom.xml 2011-03-29 17:47:49 UTC (rev 6224) +++ trunk/sql12/app/pom.xml 2011-03-30 21:34:51 UTC (rev 6225) @@ -63,8 +63,9 @@ <dependency> <groupId>${project.groupId}</groupId> <artifactId>fw</artifactId> - <version>${project.version}</version> + <version>${project.version}</version> <type>test-jar</type> + <scope>test</scope> </dependency> <dependency> <groupId>jgoodies</groupId> Property changes on: trunk/sql12/fw ___________________________________________________________________ Modified: svn:ignore - target .settings .project .classpath + target .settings .project .classpath *.iml Property changes on: trunk/sql12/plugins ___________________________________________________________________ Modified: svn:ignore - target .project .classpath .settings + target .project .classpath .settings *.iml Property changes on: trunk/sql12/plugins/codecompletion ___________________________________________________________________ Modified: svn:ignore - target .settings .project .classpath + *.iml .classpath .project .settings target Modified: trunk/sql12/plugins/codecompletion/pom.xml =================================================================== --- trunk/sql12/plugins/codecompletion/pom.xml 2011-03-29 17:47:49 UTC (rev 6224) +++ trunk/sql12/plugins/codecompletion/pom.xml 2011-03-30 21:34:51 UTC (rev 6225) @@ -55,6 +55,12 @@ </dependency> <dependency> <groupId>net.sf.squirrel-sql</groupId> + <artifactId>fw</artifactId> + <type>test-jar</type> + <scope>test</scope> + </dependency> + <dependency> + <groupId>net.sf.squirrel-sql</groupId> <artifactId>squirrel-sql</artifactId> </dependency> <dependency> Property changes on: trunk/sql12/plugins/dataimport ___________________________________________________________________ Modified: svn:ignore - target .settings .project .classpath + target .settings .project .classpath *.iml Modified: trunk/sql12/plugins/dataimport/pom.xml =================================================================== --- trunk/sql12/plugins/dataimport/pom.xml 2011-03-29 17:47:49 UTC (rev 6224) +++ trunk/sql12/plugins/dataimport/pom.xml 2011-03-30 21:34:51 UTC (rev 6225) @@ -55,6 +55,12 @@ </dependency> <dependency> <groupId>net.sf.squirrel-sql</groupId> + <artifactId>fw</artifactId> + <type>test-jar</type> + <scope>test</scope> + </dependency> + <dependency> + <groupId>net.sf.squirrel-sql</groupId> <artifactId>squirrel-sql</artifactId> </dependency> <dependency> Property changes on: trunk/sql12/plugins/db2 ___________________________________________________________________ Modified: svn:ignore - target .settings .project .classpath + target .settings .project .classpath *.iml Property changes on: trunk/sql12/plugins/dbcopy ___________________________________________________________________ Modified: svn:ignore - target .settings .project .classpath + target .settings .project .classpath *.iml Modified: trunk/sql12/plugins/dbcopy/pom.xml =================================================================== --- trunk/sql12/plugins/dbcopy/pom.xml 2011-03-29 17:47:49 UTC (rev 6224) +++ trunk/sql12/plugins/dbcopy/pom.xml 2011-03-30 21:34:51 UTC (rev 6225) @@ -55,6 +55,12 @@ </dependency> <dependency> <groupId>net.sf.squirrel-sql</groupId> + <artifactId>fw</artifactId> + <type>test-jar</type> + <scope>test</scope> + </dependency> + <dependency> + <groupId>net.sf.squirrel-sql</groupId> <artifactId>squirrel-sql</artifactId> </dependency> <dependency> Property changes on: trunk/sql12/plugins/dbdiff ___________________________________________________________________ Modified: svn:ignore - target .settings .project .classpath + target .settings .project .classpath *.iml Modified: trunk/sql12/plugins/dbdiff/pom.xml =================================================================== --- trunk/sql12/plugins/dbdiff/pom.xml 2011-03-29 17:47:49 UTC (rev 6224) +++ trunk/sql12/plugins/dbdiff/pom.xml 2011-03-30 21:34:51 UTC (rev 6225) @@ -56,6 +56,12 @@ </dependency> <dependency> <groupId>net.sf.squirrel-sql</groupId> + <artifactId>fw</artifactId> + <type>test-jar</type> + <scope>test</scope> + </dependency> + <dependency> + <groupId>net.sf.squirrel-sql</groupId> <artifactId>squirrel-sql</artifactId> </dependency> <dependency> Property changes on: trunk/sql12/plugins/derby ___________________________________________________________________ Modified: svn:ignore - target .settings .project .classpath + target .settings .project .classpath *.iml Modified: trunk/sql12/plugins/derby/pom.xml =================================================================== --- trunk/sql12/plugins/derby/pom.xml 2011-03-29 17:47:49 UTC (rev 6224) +++ trunk/sql12/plugins/derby/pom.xml 2011-03-30 21:34:51 UTC (rev 6225) @@ -56,6 +56,12 @@ </dependency> <dependency> <groupId>net.sf.squirrel-sql</groupId> + <artifactId>fw</artifactId> + <type>test-jar</type> + <scope>test</scope> + </dependency> + <dependency> + <groupId>net.sf.squirrel-sql</groupId> <artifactId>squirrel-sql</artifactId> </dependency> <dependency> Property changes on: trunk/sql12/plugins/editextras ___________________________________________________________________ Modified: svn:ignore - target .settings .project .classpath + target .settings .project .classpath *.iml Modified: trunk/sql12/plugins/editextras/pom.xml =================================================================== --- trunk/sql12/plugins/editextras/pom.xml 2011-03-29 17:47:49 UTC (rev 6224) +++ trunk/sql12/plugins/editextras/pom.xml 2011-03-30 21:34:51 UTC (rev 6225) @@ -55,6 +55,12 @@ </dependency> <dependency> <groupId>net.sf.squirrel-sql</groupId> + <artifactId>fw</artifactId> + <type>test-jar</type> + <scope>test</scope> + </dependency> + <dependency> + <groupId>net.sf.squirrel-sql</groupId> <artifactId>squirrel-sql</artifactId> </dependency> <dependency> Property changes on: trunk/sql12/plugins/example ___________________________________________________________________ Modified: svn:ignore - target .settings .project .classpath + target .settings .project .classpath *.iml Modified: trunk/sql12/plugins/example/pom.xml =================================================================== --- trunk/sql12/plugins/example/pom.xml 2011-03-29 17:47:49 UTC (rev 6224) +++ trunk/sql12/plugins/example/pom.xml 2011-03-30 21:34:51 UTC (rev 6225) @@ -64,6 +64,13 @@ </dependency> <dependency> <groupId>net.sf.squirrel-sql</groupId> + <artifactId>fw</artifactId> + <version>3.3.0-SNAPSHOT</version> + <type>test-jar</type> + <scope>test</scope> + </dependency> + <dependency> + <groupId>net.sf.squirrel-sql</groupId> <artifactId>squirrel-sql</artifactId> <version>3.3.0-SNAPSHOT</version> <type>test-jar</type> Property changes on: trunk/sql12/plugins/exportconfig ___________________________________________________________________ Modified: svn:ignore - target .settings .project .classpath + target .settings .project .classpath *.iml Property changes on: trunk/sql12/plugins/favs ___________________________________________________________________ Modified: svn:ignore - target .settings .project .classpath + target .settings .project .classpath *.iml Modified: trunk/sql12/plugins/favs/pom.xml =================================================================== --- trunk/sql12/plugins/favs/pom.xml 2011-03-29 17:47:49 UTC (rev 6224) +++ trunk/sql12/plugins/favs/pom.xml 2011-03-30 21:34:51 UTC (rev 6225) @@ -55,6 +55,12 @@ </dependency> <dependency> <groupId>net.sf.squirrel-sql</groupId> + <artifactId>fw</artifactId> + <type>test-jar</type> + <scope>test</scope> + </dependency> + <dependency> + <groupId>net.sf.squirrel-sql</groupId> <artifactId>squirrel-sql</artifactId> </dependency> <dependency> Property changes on: trunk/sql12/plugins/firebird ___________________________________________________________________ Modified: svn:ignore - target .settings .project .classpath + target .settings .project .classpath *.iml Modified: trunk/sql12/plugins/firebird/pom.xml =================================================================== --- trunk/sql12/plugins/firebird/pom.xml 2011-03-29 17:47:49 UTC (rev 6224) +++ trunk/sql12/plugins/firebird/pom.xml 2011-03-30 21:34:51 UTC (rev 6225) @@ -55,6 +55,12 @@ </dependency> <dependency> <groupId>net.sf.squirrel-sql</groupId> + <artifactId>fw</artifactId> + <type>test-jar</type> + <scope>test</scope> + </dependency> + <dependency> + <groupId>net.sf.squirrel-sql</groupId> <artifactId>squirrel-sql</artifactId> </dependency> <dependency> Property changes on: trunk/sql12/plugins/firebirdmanager ___________________________________________________________________ Modified: svn:ignore - target .settings .project .classpath + target .settings .project .classpath *.iml Property changes on: trunk/sql12/plugins/graph ___________________________________________________________________ Modified: svn:ignore - target .settings .project .classpath + target .settings .project .classpath *.iml Modified: trunk/sql12/plugins/graph/pom.xml =================================================================== --- trunk/sql12/plugins/graph/pom.xml 2011-03-29 17:47:49 UTC (rev 6224) +++ trunk/sql12/plugins/graph/pom.xml 2011-03-30 21:34:51 UTC (rev 6225) @@ -55,6 +55,12 @@ </dependency> <dependency> <groupId>net.sf.squirrel-sql</groupId> + <artifactId>fw</artifactId> + <type>test-jar</type> + <scope>test</scope> + </dependency> + <dependency> + <groupId>net.sf.squirrel-sql</groupId> <artifactId>squirrel-sql</artifactId> </dependency> <dependency> Property changes on: trunk/sql12/plugins/h2 ___________________________________________________________________ Modified: svn:ignore - target .settings .project .classpath + target .settings .project .classpath *.iml Modified: trunk/sql12/plugins/h2/pom.xml =================================================================== --- trunk/sql12/plugins/h2/pom.xml 2011-03-29 17:47:49 UTC (rev 6224) +++ trunk/sql12/plugins/h2/pom.xml 2011-03-30 21:34:51 UTC (rev 6225) @@ -55,6 +55,12 @@ </dependency> <dependency> <groupId>net.sf.squirrel-sql</groupId> + <artifactId>fw</artifactId> + <type>test-jar</type> + <scope>test</scope> + </dependency> + <dependency> + <groupId>net.sf.squirrel-sql</groupId> <artifactId>squirrel-sql</artifactId> </dependency> <dependency> Property changes on: trunk/sql12/plugins/hibernate ___________________________________________________________________ Modified: svn:ignore - target .settings .project .classpath + target .settings .project .classpath *.iml Modified: trunk/sql12/plugins/hibernate/pom.xml =================================================================== --- trunk/sql12/plugins/hibernate/pom.xml 2011-03-29 17:47:49 UTC (rev 6224) +++ trunk/sql12/plugins/hibernate/pom.xml 2011-03-30 21:34:51 UTC (rev 6225) @@ -55,6 +55,12 @@ </dependency> <dependency> <groupId>net.sf.squirrel-sql</groupId> + <artifactId>fw</artifactId> + <type>test-jar</type> + <scope>test</scope> + </dependency> + <dependency> + <groupId>net.sf.squirrel-sql</groupId> <artifactId>squirrel-sql</artifactId> </dependency> <dependency> Property changes on: trunk/sql12/plugins/i18n ___________________________________________________________________ Modified: svn:ignore - target .settings .project .classpath + target .settings .project .classpath *.iml Modified: trunk/sql12/plugins/i18n/pom.xml =================================================================== --- trunk/sql12/plugins/i18n/pom.xml 2011-03-29 17:47:49 UTC (rev 6224) +++ trunk/sql12/plugins/i18n/pom.xml 2011-03-30 21:34:51 UTC (rev 6225) @@ -55,6 +55,12 @@ </dependency> <dependency> <groupId>net.sf.squirrel-sql</groupId> + <artifactId>fw</artifactId> + <type>test-jar</type> + <scope>test</scope> + </dependency> + <dependency> + <groupId>net.sf.squirrel-sql</groupId> <artifactId>squirrel-sql</artifactId> </dependency> <dependency> Property changes on: trunk/sql12/plugins/informix ___________________________________________________________________ Modified: svn:ignore - target .settings .project .classpath + target .settings .project .classpath *.iml Modified: trunk/sql12/plugins/informix/pom.xml =================================================================== --- trunk/sql12/plugins/informix/pom.xml 2011-03-29 17:47:49 UTC (rev 6224) +++ trunk/sql12/plugins/informix/pom.xml 2011-03-30 21:34:51 UTC (rev 6225) @@ -56,6 +56,12 @@ </dependency> <dependency> <groupId>net.sf.squirrel-sql</groupId> + <artifactId>fw</artifactId> + <type>test-jar</type> + <scope>test</scope> + </dependency> + <dependency> + <groupId>net.sf.squirrel-sql</groupId> <artifactId>squirrel-sql</artifactId> </dependency> <dependency> Property changes on: trunk/sql12/plugins/laf ___________________________________________________________________ Modified: svn:ignore - target .settings .project .classpath + target .settings .project .classpath *.iml Modified: trunk/sql12/plugins/laf/pom.xml =================================================================== --- trunk/sql12/plugins/laf/pom.xml 2011-03-29 17:47:49 UTC (rev 6224) +++ trunk/sql12/plugins/laf/pom.xml 2011-03-30 21:34:51 UTC (rev 6225) @@ -86,6 +86,13 @@ </dependency> <dependency> <groupId>net.sf.squirrel-sql</groupId> + <artifactId>fw</artifactId> + <version>${project.version}</version> + <type>test-jar</type> + <scope>test</scope> + </dependency> + <dependency> + <groupId>net.sf.squirrel-sql</groupId> <artifactId>squirrel-sql</artifactId> <version>${project.version}</version> </dependency> Property changes on: trunk/sql12/plugins/macosx ___________________________________________________________________ Modified: svn:ignore - target .settings .project .classpath + target .settings .project .classpath *.iml Property changes on: trunk/sql12/plugins/mssql ___________________________________________________________________ Modified: svn:ignore - target .settings .project .classpath + target .settings .project .classpath *.iml Modified: trunk/sql12/plugins/mssql/pom.xml =================================================================== --- trunk/sql12/plugins/mssql/pom.xml 2011-03-29 17:47:49 UTC (rev 6224) +++ trunk/sql12/plugins/mssql/pom.xml 2011-03-30 21:34:51 UTC (rev 6225) @@ -55,6 +55,12 @@ </dependency> <dependency> <groupId>net.sf.squirrel-sql</groupId> + <artifactId>fw</artifactId> + <type>test-jar</type> + <scope>test</scope> + </dependency> + <dependency> + <groupId>net.sf.squirrel-sql</groupId> <artifactId>squirrel-sql</artifactId> </dependency> <dependency> Property changes on: trunk/sql12/plugins/mysql ___________________________________________________________________ Modified: svn:ignore - target .settings .project .classpath + target .settings .project .classpath *.iml Modified: trunk/sql12/plugins/mysql/pom.xml =================================================================== --- trunk/sql12/plugins/mysql/pom.xml 2011-03-29 17:47:49 UTC (rev 6224) +++ trunk/sql12/plugins/mysql/pom.xml 2011-03-30 21:34:51 UTC (rev 6225) @@ -55,6 +55,12 @@ </dependency> <dependency> <groupId>net.sf.squirrel-sql</groupId> + <artifactId>fw</artifactId> + <type>test-jar</type> + <scope>test</scope> + </dependency> + <dependency> + <groupId>net.sf.squirrel-sql</groupId> <artifactId>squirrel-sql</artifactId> </dependency> <dependency> Property changes on: trunk/sql12/plugins/netezza ___________________________________________________________________ Modified: svn:ignore - target .settings .project .classpath + target .settings .project .classpath *.iml Modified: trunk/sql12/plugins/netezza/pom.xml =================================================================== --- trunk/sql12/plugins/netezza/pom.xml 2011-03-29 17:47:49 UTC (rev 6224) +++ trunk/sql12/plugins/netezza/pom.xml 2011-03-30 21:34:51 UTC (rev 6225) @@ -55,6 +55,12 @@ </dependency> <dependency> <groupId>net.sf.squirrel-sql</groupId> + <artifactId>fw</artifactId> + <type>test-jar</type> + <scope>test</scope> + </dependency> + <dependency> + <groupId>net.sf.squirrel-sql</groupId> <artifactId>squirrel-sql</artifactId> </dependency> <dependency> Property changes on: trunk/sql12/plugins/oracle ___________________________________________________________________ Modified: svn:ignore - target .settings .project .classpath + target .settings .project .classpath *.iml Modified: trunk/sql12/plugins/oracle/pom.xml =================================================================== --- trunk/sql12/plugins/oracle/pom.xml 2011-03-29 17:47:49 UTC (rev 6224) +++ trunk/sql12/plugins/oracle/pom.xml 2011-03-30 21:34:51 UTC (rev 6225) @@ -55,6 +55,12 @@ </dependency> <dependency> <groupId>net.sf.squirrel-sql</groupId> + <artifactId>fw</artifactId> + <type>test-jar</type> + <scope>test</scope> + </dependency> + <dependency> + <groupId>net.sf.squirrel-sql</groupId> <artifactId>squirrel-sql</artifactId> </dependency> <dependency> Property changes on: trunk/sql12/plugins/postgres ___________________________________________________________________ Modified: svn:ignore - target .settings .project .classpath + target .settings .project .classpath *.iml Modified: trunk/sql12/plugins/postgres/pom.xml =================================================================== --- trunk/sql12/plugins/postgres/pom.xml 2011-03-29 17:47:49 UTC (rev 6224) +++ trunk/sql12/plugins/postgres/pom.xml 2011-03-30 21:34:51 UTC (rev 6225) @@ -55,6 +55,12 @@ </dependency> <dependency> <groupId>net.sf.squirrel-sql</groupId> + <artifactId>fw</artifactId> + <type>test-jar</type> + <scope>test</scope> + </dependency> + <dependency> + <groupId>net.sf.squirrel-sql</groupId> <artifactId>squirrel-sql</artifactId> </dependency> <dependency> Property changes on: trunk/sql12/plugins/refactoring ___________________________________________________________________ Modified: svn:ignore - target .settings .project .classpath + target .settings .project .classpath *.iml Modified: trunk/sql12/plugins/refactoring/pom.xml =================================================================== --- trunk/sql12/plugins/refactoring/pom.xml 2011-03-29 17:47:49 UTC (rev 6224) +++ trunk/sql12/plugins/refactoring/pom.xml 2011-03-30 21:34:51 UTC (rev 6225) @@ -55,6 +55,12 @@ </dependency> <dependency> <groupId>net.sf.squirrel-sql</groupId> + <artifactId>fw</artifactId> + <type>test-jar</type> + <scope>test</scope> + </dependency> + <dependency> + <groupId>net.sf.squirrel-sql</groupId> <artifactId>squirrel-sql</artifactId> </dependency> <dependency> Property changes on: trunk/sql12/plugins/sessionscript ___________________________________________________________________ Modified: svn:ignore - target .settings .project .classpath + target .settings .project .classpath *.iml Modified: trunk/sql12/plugins/sessionscript/pom.xml =================================================================== --- trunk/sql12/plugins/sessionscript/pom.xml 2011-03-29 17:47:49 UTC (rev 6224) +++ trunk/sql12/plugins/sessionscript/pom.xml 2011-03-30 21:34:51 UTC (rev 6225) @@ -55,6 +55,12 @@ </dependency> <dependency> <groupId>net.sf.squirrel-sql</groupId> + <artifactId>fw</artifactId> + <type>test-jar</type> + <scope>test</scope> + </dependency> + <dependency> + <groupId>net.sf.squirrel-sql</groupId> <artifactId>squirrel-sql</artifactId> </dependency> <dependency> Property changes on: trunk/sql12/plugins/smarttools ___________________________________________________________________ Modified: svn:ignore - target .settings .project .classpath + target .settings .project .classpath *.iml Property changes on: trunk/sql12/plugins/sqlbookmark ___________________________________________________________________ Modified: svn:ignore - target .settings .project .classpath + target .settings .project .classpath *.iml Modified: trunk/sql12/plugins/sqlbookmark/pom.xml =================================================================== --- trunk/sql12/plugins/sqlbookmark/pom.xml 2011-03-29 17:47:49 UTC (rev 6224) +++ trunk/sql12/plugins/sqlbookmark/pom.xml 2011-03-30 21:34:51 UTC (rev 6225) @@ -55,6 +55,12 @@ </dependency> <dependency> <groupId>net.sf.squirrel-sql</groupId> + <artifactId>fw</artifactId> + <type>test-jar</type> + <scope>test</scope> + </dependency> + <dependency> + <groupId>net.sf.squirrel-sql</groupId> <artifactId>squirrel-sql</artifactId> </dependency> <dependency> Property changes on: trunk/sql12/plugins/sqlparam ___________________________________________________________________ Modified: svn:ignore - target .settings .project .classpath + target .settings .project .classpath *.iml Modified: trunk/sql12/plugins/sqlparam/pom.xml =================================================================== --- trunk/sql12/plugins/sqlparam/pom.xml 2011-03-29 17:47:49 UTC (rev 6224) +++ trunk/sql12/plugins/sqlparam/pom.xml 2011-03-30 21:34:51 UTC (rev 6225) @@ -55,6 +55,12 @@ </dependency> <dependency> <groupId>net.sf.squirrel-sql</groupId> + <artifactId>fw</artifactId> + <type>test-jar</type> + <scope>test</scope> + </dependency> + <dependency> + <groupId>net.sf.squirrel-sql</groupId> <artifactId>squirrel-sql</artifactId> </dependency> <dependency> Property changes on: trunk/sql12/plugins/sqlreplace ___________________________________________________________________ Modified: svn:ignore - target .settings .project .classpath + target .settings .project .classpath *.iml Modified: trunk/sql12/plugins/sqlreplace/pom.xml =================================================================== --- trunk/sql12/plugins/sqlreplace/pom.xml 2011-03-29 17:47:49 UTC (rev 6224) +++ trunk/sql12/plugins/sqlreplace/pom.xml 2011-03-30 21:34:51 UTC (rev 6225) @@ -55,6 +55,12 @@ </dependency> <dependency> <groupId>net.sf.squirrel-sql</groupId> + <artifactId>fw</artifactId> + <type>test-jar</type> + <scope>test</scope> + </dependency> + <dependency> + <groupId>net.sf.squirrel-sql</groupId> <artifactId>squirrel-sql</artifactId> </dependency> <dependency> Property changes on: trunk/sql12/plugins/sqlscript ___________________________________________________________________ Modified: svn:ignore - target .settings .project .classpath + target .settings .project .classpath *.iml Modified: trunk/sql12/plugins/sqlscript/pom.xml =================================================================== --- trunk/sql12/plugins/sqlscript/pom.xml 2011-03-29 17:47:49 UTC (rev 6224) +++ trunk/sql12/plugins/sqlscript/pom.xml 2011-03-30 21:34:51 UTC (rev 6225) @@ -55,6 +55,12 @@ </dependency> <dependency> <groupId>net.sf.squirrel-sql</groupId> + <artifactId>fw</artifactId> + <type>test-jar</type> + <scope>test</scope> + </dependency> + <dependency> + <groupId>net.sf.squirrel-sql</groupId> <artifactId>squirrel-sql</artifactId> </dependency> <dependency> Property changes on: trunk/sql12/plugins/sqlval ___________________________________________________________________ Modified: svn:ignore - target .settings .project .classpath + target .settings .project .classpath *.iml Modified: trunk/sql12/plugins/sqlval/pom.xml =================================================================== --- trunk/sql12/plugins/sqlval/pom.xml 2011-03-29 17:47:49 UTC (rev 6224) +++ trunk/sql12/plugins/sqlval/pom.xml 2011-03-30 21:34:51 UTC (rev 6225) @@ -55,6 +55,12 @@ </dependency> <dependency> <groupId>net.sf.squirrel-sql</groupId> + <artifactId>fw</artifactId> + <type>test-jar</type> + <scope>test</scope> + </dependency> + <dependency> + <groupId>net.sf.squirrel-sql</groupId> <artifactId>squirrel-sql</artifactId> </dependency> <dependency> Property changes on: trunk/sql12/plugins/squirrelsql-plugin-archetype ___________________________________________________________________ Modified: svn:ignore - target .project .classpath .settings + target .project .classpath .settings *.iml Modified: trunk/sql12/plugins/squirrelsql-plugin-archetype/pom.xml =================================================================== --- trunk/sql12/plugins/squirrelsql-plugin-archetype/pom.xml 2011-03-29 17:47:49 UTC (rev 6224) +++ trunk/sql12/plugins/squirrelsql-plugin-archetype/pom.xml 2011-03-30 21:34:51 UTC (rev 6225) @@ -75,7 +75,6 @@ <version>${project.version}</version> <classifier>test-sources</classifier> </dependency> - </dependencies> <build> <extensions> Modified: trunk/sql12/plugins/squirrelsql-plugin-archetype/src/main/resources/archetype-resources/pom.xml =================================================================== --- trunk/sql12/plugins/squirrelsql-plugin-archetype/src/main/resources/archetype-resources/pom.xml 2011-03-29 17:47:49 UTC (rev 6224) +++ trunk/sql12/plugins/squirrelsql-plugin-archetype/src/main/resources/archetype-resources/pom.xml 2011-03-30 21:34:51 UTC (rev 6225) @@ -58,6 +58,12 @@ </dependency> <dependency> <groupId>net.sf.squirrel-sql</groupId> + <artifactId>fw</artifactId> + <type>test-jar</type> + <scope>test</scope> + </dependency> + <dependency> + <groupId>net.sf.squirrel-sql</groupId> <artifactId>squirrel-sql</artifactId> </dependency> <dependency> Property changes on: trunk/sql12/plugins/squirrelsql-plugins-assembly-descriptor ___________________________________________________________________ Modified: svn:ignore - .project .classpath .settings target + .project .classpath .settings target *.iml Property changes on: trunk/sql12/plugins/squirrelsql-plugins-parent-pom ___________________________________________________________________ Modified: svn:ignore - target .project .classpath .settings + target .project .classpath .settings *.iml Modified: trunk/sql12/plugins/squirrelsql-plugins-parent-pom/pom.xml =================================================================== --- trunk/sql12/plugins/squirrelsql-plugins-parent-pom/pom.xml 2011-03-29 17:47:49 UTC (rev 6224) +++ trunk/sql12/plugins/squirrelsql-plugins-parent-pom/pom.xml 2011-03-30 21:34:51 UTC (rev 6225) @@ -73,12 +73,14 @@ <artifactId>fw</artifactId> <version>3.3.0-SNAPSHOT</version> <type>test-jar</type> + <scope>test</scope> </dependency> <dependency> <groupId>net.sf.squirrel-sql</groupId> <artifactId>squirrel-sql</artifactId> <version>3.3.0-SNAPSHOT</version> <type>test-jar</type> + <scope>test</scope> </dependency> <dependency> <groupId>gsbase</groupId> Property changes on: trunk/sql12/plugins/sybase ___________________________________________________________________ Modified: svn:ignore - target .settings .project .classpath + target .settings .project .classpath *.iml Property changes on: trunk/sql12/plugins/syntax ___________________________________________________________________ Modified: svn:ignore - target .settings .project .classpath + target .settings .project .classpath *.iml Modified: trunk/sql12/plugins/syntax/pom.xml =================================================================== --- trunk/sql12/plugins/syntax/pom.xml 2011-03-29 17:47:49 UTC (rev 6224) +++ trunk/sql12/plugins/syntax/pom.xml 2011-03-30 21:34:51 UTC (rev 6225) @@ -55,6 +55,12 @@ </dependency> <dependency> <groupId>net.sf.squirrel-sql</groupId> + <artifactId>fw</artifactId> + <type>test-jar</type> + <scope>test</scope> + </dependency> + <dependency> + <groupId>net.sf.squirrel-sql</groupId> <artifactId>squirrel-sql</artifactId> </dependency> <dependency> Property changes on: trunk/sql12/plugins/userscript ___________________________________________________________________ Modified: svn:ignore - target .settings .project .classpath + target .settings .project .classpath *.iml Modified: trunk/sql12/plugins/userscript/pom.xml =================================================================== --- trunk/sql12/plugins/userscript/pom.xml 2011-03-29 17:47:49 UTC (rev 6224) +++ trunk/sql12/plugins/userscript/pom.xml 2011-03-30 21:34:51 UTC (rev 6225) @@ -55,6 +55,12 @@ </dependency> <dependency> <groupId>net.sf.squirrel-sql</groupId> + <artifactId>fw</artifactId> + <type>test-jar</type> + <scope>test</scope> + </dependency> + <dependency> + <groupId>net.sf.squirrel-sql</groupId> <artifactId>squirrel-sql</artifactId> </dependency> <dependency> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ger...@us...> - 2011-04-04 20:12:31
|
Revision: 6231 http://squirrel-sql.svn.sourceforge.net/squirrel-sql/?rev=6231&view=rev Author: gerdwagner Date: 2011-04-04 20:12:25 +0000 (Mon, 04 Apr 2011) Log Message: ----------- java.lang.NoClassDefFoundError: org/eclipse/core/runtime/IProgressMonitor Modified Paths: -------------- trunk/sql12/installer/pom.xml trunk/sql12/plugins/dbdiff/pom.xml Modified: trunk/sql12/installer/pom.xml =================================================================== --- trunk/sql12/installer/pom.xml 2011-04-04 02:28:56 UTC (rev 6230) +++ trunk/sql12/installer/pom.xml 2011-04-04 20:12:25 UTC (rev 6231) @@ -131,6 +131,7 @@ <includedArtifact>net.sf.squirrel-sql.thirdparty-non-maven:treetable</includedArtifact> <includedArtifact>org.eclipse.swt.win32.win32:x86</includedArtifact> <includedArtifact>org.mod4j.org.eclipse.compare:core</includedArtifact> + <includedArtifact>org.eclipse.equinox:org.eclipse.equinox.common</includedArtifact> <includedArtifact>org.jmeld:jmeld</includedArtifact> <includedArtifact>javax.help:javahelp</includedArtifact> <includedArtifact>com.jidesoft:jide-oss</includedArtifact> Modified: trunk/sql12/plugins/dbdiff/pom.xml =================================================================== --- trunk/sql12/plugins/dbdiff/pom.xml 2011-04-04 02:28:56 UTC (rev 6230) +++ trunk/sql12/plugins/dbdiff/pom.xml 2011-04-04 20:12:25 UTC (rev 6231) @@ -111,6 +111,11 @@ <version>3.3.0-v3346</version> </dependency> <dependency> + <groupId>org.eclipse.equinox</groupId> + <artifactId>org.eclipse.equinox.common</artifactId> + <version>3.6.0.v20100503</version> + </dependency> + <dependency> <groupId>org.mod4j.org.eclipse.compare</groupId> <artifactId>core</artifactId> <version>3.5.0</version> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |