001    package com.sptci.rwt.webui.model;
002    
003    import nextapp.echo2.app.Component;
004    import nextapp.echo2.app.Grid;
005    import nextapp.echo2.app.Label;
006    
007    import echopointng.DirectHtml;
008    import echopointng.GroupBox;
009    
010    import com.sptci.echo2.Configuration;
011    
012    import com.sptci.rwt.MetaData;
013    import com.sptci.rwt.TriggerMetaData;
014    
015    /**
016     * A view component used to display the information contained in
017     * {@link com.sptci.rwt.TriggerMetaData}.
018     *
019     * <p>&copy; Copyright 2007 <a href='http://sptci.com/' target='_new'>Sans Pareil Technologies, Inc.</a></p>
020     * @author Rakesh Vidyadharan 2007-10-07
021     * @version $Id: TriggerView.java 4123 2008-05-25 21:49:01Z rakesh $
022     */
023    public class TriggerView extends SourceView
024    {
025      /** The meta data object whose details are to be displayed. */
026      private final TriggerMetaData metaData;
027    
028      /**
029       * Create a new instance of the view using the specified model object.
030       *
031       * @param metaData The {@link #metaData} model object to use.
032       */
033      public TriggerView( final TriggerMetaData metaData )
034      {
035        this.metaData = metaData;
036      }
037    
038      /**
039       * Lifecycle method used to initialise component when added to a
040       * container hierarchy.
041       *
042       * @see #createDetails
043       * @see #createStatementDetails
044       */
045      @Override
046      public void init()
047      {
048        removeAll();
049        add( createDetails() );
050        add( createStatementDetails() );
051      }
052    
053      /**
054       * Create the component used to display the details of the index.
055       *
056       * @see #createLabels
057       * @return The component that displays the index information.
058       */
059      protected Component createDetails()
060      {
061        Grid grid = new Grid();
062    
063        createLabels( "name", metaData, grid );
064        createLabels( "table", metaData, grid );
065        createLabels( "tableSchema", metaData, grid );
066        createLabels( "event", metaData, grid );
067        createLabels( "orientation", metaData, grid );
068        createLabels( "timing", metaData, grid );
069    
070        GroupBox box = new GroupBox( Configuration.getString( this, "title" ) );
071        box.add( grid );
072        return box;
073      }
074    
075      /**
076       * Create the component used to display the SQL statement that is executed
077       * by the trigger.
078       *
079       * @see #toHtml
080       * @see #syntaxHighlight
081       * @return The component that displays the SQL statement
082       */
083      protected Component createStatementDetails()
084      {
085        TriggerMetaData tmd = (TriggerMetaData) metaData;
086        String statement = tmd.getStatement();
087    
088        if ( statement == null ) return new Label( "" );
089    
090        statement = syntaxHighlight( toHtml( statement ) );
091    
092        GroupBox box = new GroupBox(
093            Configuration.getString( this, "statement.title" ) );
094        box.add( new DirectHtml( statement ) );
095        return box;
096      }
097    }