001: /*
002: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
003: *
004: * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
005: *
006: * The contents of this file are subject to the terms of either the GNU
007: * General Public License Version 2 only ("GPL") or the Common
008: * Development and Distribution License("CDDL") (collectively, the
009: * "License"). You may not use this file except in compliance with the
010: * License. You can obtain a copy of the License at
011: * http://www.netbeans.org/cddl-gplv2.html
012: * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
013: * specific language governing permissions and limitations under the
014: * License. When distributing the software, include this License Header
015: * Notice in each file and include the License file at
016: * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
017: * particular file as subject to the "Classpath" exception as provided
018: * by Sun in the GPL Version 2 section of the License file that
019: * accompanied this code. If applicable, add the following below the
020: * License Header, with the fields enclosed by brackets [] replaced by
021: * your own identifying information:
022: * "Portions Copyrighted [year] [name of copyright owner]"
023: *
024: * Contributor(s):
025: *
026: * The Original Software is NetBeans. The Initial Developer of the Original
027: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
028: * Microsystems, Inc. All Rights Reserved.
029: *
030: * If you wish your version of this file to be governed by only the CDDL
031: * or only the GPL Version 2, indicate your decision by adding
032: * "[Contributor] elects to include this software in this distribution
033: * under the [CDDL or GPL Version 2] license." If you do not indicate a
034: * single choice of license, a recipient has the option to distribute
035: * your version of this file under either the CDDL, the GPL Version 2 or
036: * to extend the choice of license to its licensees as provided above.
037: * However, if you add GPL Version 2 code and therefore, elected the GPL
038: * Version 2 license, then the option applies only if the new code is
039: * made subject to such option by the copyright holder.
040: */
041:
042: package org.netbeans.modules.db.sql.visualeditor.api;
043:
044: import java.awt.Component;
045:
046: import java.beans.PropertyChangeListener;
047: import java.beans.PropertyChangeSupport;
048:
049: import org.netbeans.api.db.explorer.DatabaseConnection;
050:
051: import org.netbeans.modules.db.sql.visualeditor.querybuilder.QueryBuilder;
052:
053: /**
054: * Class to encapsulate a visual SQL editor.
055: *
056: * @author Jim Davidson
057: */
058: public final class VisualSQLEditor {
059:
060: // Private fields
061:
062: /**
063: * Property corresponding to the SQL statement; for listening.
064: */
065: public static final String PROP_STATEMENT = "STATEMENT";
066:
067: private String statement;
068: private VisualSQLEditorMetaData metadata;
069: private DatabaseConnection dbconn;
070: private Component queryBuilder = null;
071:
072: private PropertyChangeSupport changeSupport = new PropertyChangeSupport(
073: this );
074:
075: /*
076: * Constructor for VisualSQLEditor.
077: * Package protected, used only by Factory class.
078: */
079: VisualSQLEditor(DatabaseConnection dbconn, String statement,
080: VisualSQLEditorMetaData metadata) {
081: this .dbconn = dbconn;
082: this .statement = statement;
083: this .metadata = metadata;
084: }
085:
086: /**
087: * Create and open the QueryBuilder that backs up this VisualSQLEditor instance.
088: *
089: * @return the new QueryBuilder component
090: */
091: public Component open() {
092: // return QueryBuilder.open(dbconn, statement, metadata);
093: queryBuilder = QueryBuilder.open(dbconn, statement, metadata,
094: this );
095: return queryBuilder;
096: }
097:
098: /**
099: * Returns the current value of the SQL statement
100: *
101: * @return the statement
102: */
103: public String getStatement() {
104: return this .statement;
105: }
106:
107: /**
108: * Sets the value of the SQL statement
109: *
110: * @param statement - the new statement value
111: */
112: public void setStatement(String statement) {
113: String oldValue = this .statement;
114: this .statement = statement;
115: changeSupport.firePropertyChange(PROP_STATEMENT, oldValue,
116: statement);
117: }
118:
119: /**
120: * Adds a property change listener. The only property of interest is PROP_STATEMENT,
121: * which contains the SQL query.
122: *
123: * @param listener The listener to add.
124: */
125: public void addPropertyChangeListener(
126: PropertyChangeListener listener) {
127: changeSupport.addPropertyChangeListener(listener);
128: }
129:
130: /**
131: * Remove a PropertyChangeListener from the listener list.
132: *
133: * @param listener - the listener to remove.
134: */
135: public void removePropertyChangeListener(
136: PropertyChangeListener listener) {
137: changeSupport.removePropertyChangeListener(listener);
138: }
139:
140: }
|