package net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs; import java.awt.BorderLayout; import java.awt.LayoutManager; import java.sql.PreparedStatement; import java.util.HashMap; import javax.swing.JPanel; import javax.swing.JTextArea; import javax.swing.text.JTextComponent; import net.sourceforge.squirrel_sql.client.session.ISQLEntryPanel; import net.sourceforge.squirrel_sql.client.session.ISQLEntryPanelFactory; import net.sourceforge.squirrel_sql.client.session.ISession; import net.sourceforge.squirrel_sql.client.session.SQLEntryPanelUtil; import net.sourceforge.squirrel_sql.client.session.parser.IParserEventsProcessorFactory; abstract public class BaseSourcePanel extends JPanel { private JTextComponent textArea; private ISession session; public BaseSourcePanel(ISession session) { super(new BorderLayout()); setSession(session); createUserInterface(); } /** * Create the user interface. * The created {@link JTextComponent} depends on the {@link ISQLEntryPanelFactory}. * This enables support for Syntax-Highlighting, if the syntax plugin is loaded. */ protected void createUserInterface() { HashMap<String, Object> props = new HashMap<String, Object>(); props.put(IParserEventsProcessorFactory.class.getName(), null); ISQLEntryPanel sqlPanel = getSession().getApplication().getSQLEntryPanelFactory().createSQLEntryPanel(getSession(), props ); JTextComponent textComponent = sqlPanel.getTextComponent(); textComponent.setEditable(false); setTextArea(textComponent); add(getTextArea(), BorderLayout.CENTER); } public abstract void load(ISession session, PreparedStatement stmt); /** * @return the textArea */ public JTextComponent getTextArea() { return textArea; } /** * @param textArea the textArea to set */ private void setTextArea(JTextComponent textArea) { if(textArea == null){ throw new IllegalArgumentException("textArea == null"); } this.textArea = textArea; } /** * @return the session */ public ISession getSession() { return session; } /** * @param session the session to set */ private void setSession(ISession session) { if(session == null){ throw new IllegalArgumentException("session == null"); } this.session = session; } }