Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / General / November 2007

Tip: Looking for answers? Try searching our database.

What is the specific procedure to call a NetBeans plugin?

Thread view: 
Ramon F Herrera - 05 Nov 2007 01:18 GMT
I have been using this "application" as a tutorial to learn the
capabilities of the OpenOffice API/SDK.

 http://platform.netbeans.org/tutorials/nbm-open-office.html

My problem is that the package described in that page was not written
as an application, but as a plugin extension to NetBeans. My goal
seems very simple; to have a main like this:

public class SheetMaker {
   public static void main(String[] args) {
       new JavaLobbyTopComponent.ResolvableHelper().readResolve();
   }
}

(the above attempt is as close as I have been to success, it compiles,
but fails at run time).

which I will build in several different (non-NB) IDEs and make an
executable *.jar.

The next post contains the source of the full class
("JavaLobbyTopComponent") that I am trying to execute.

-Ramon
Ramon F Herrera - 05 Nov 2007 01:24 GMT
> I have been using this "application" as a tutorial to learn the
> capabilities of the OpenOffice API/SDK.
[quoted text clipped - 22 lines]
>
> -Ramon

package org.netbeans.modules.javalobbymodule;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.Serializable;
import javax.swing.JFileChooser;
import org.openide.ErrorManager;
import org.openide.util.NbBundle;
import org.openide.util.RequestProcessor;
import org.openide.util.Utilities;
import org.openide.windows.TopComponent;
import org.openide.windows.WindowManager;
import com.sun.star.lang.XComponent;
import com.sun.star.sheet.XSpreadsheet;
import com.sun.star.sheet.XSpreadsheetDocument;

/**
* Top component which displays something.
*/
final class JavaLobbyTopComponent extends TopComponent {

//These are for determining whether user
//wants to see "Most Replies" and/or "Least Replies":
   private boolean mostRepliesShown = true;
   private boolean leastRepliesShown = false;
   private int clickOnMostRepliesShown = 0;
   private int clickOnLeastRepliesShown = 1;

//These are for calculating highest and lowest
//number of replies (in final column):
   private int mostRepliesSoFar = 0;
   private int leastRepliesSoFar = 0;
   private int index_most = 0;
   private int index_least = 0;
   private String mostAuthor;
   private String leastAuthor;
   private String totalNumber;

   private static JavaLobbyTopComponent instance;
   /** path to the icon used by the component and its open action */
//    static final String ICON_PATH = "SET/PATH/TO/ICON/HERE";

   private static final String PREFERRED_ID =
"JavaLobbyTopComponent";

   private JavaLobbyTopComponent() {
       initComponents();
       setName(NbBundle.getMessage(JavaLobbyTopComponent.class,
"CTL_JavaLobbyTopComponent"));

setToolTipText(NbBundle.getMessage(JavaLobbyTopComponent.class,
"HINT_JavaLobbyTopComponent"));
//        setIcon(Utilities.loadImage(ICON_PATH, true));
   }

   /** This method is called from within the constructor to
    * initialize the form.
    * WARNING: Do NOT modify this code. The content of this method is
    * always regenerated by the Form Editor.
    */
   // <editor-fold defaultstate="collapsed" desc=" Generated Code
">
   private void initComponents() {
       jScrollPane1 = new javax.swing.JScrollPane();
       jTable1 = new javax.swing.JTable();
       ReportButton = new javax.swing.JButton();
       jRadioButton1 = new javax.swing.JRadioButton();
       jRadioButton2 = new javax.swing.JRadioButton();
       jPanel1 = new javax.swing.JPanel();
       jLabel1 = new javax.swing.JLabel();
       jTextField1 = new javax.swing.JTextField();
       jButton2 = new javax.swing.JButton();

       jScrollPane1.setHorizontalScrollBar(null);
       jTable1.setModel(new javax.swing.table.DefaultTableModel(
           new Object [][] {
               {"How do we do", "6/32", "Pedro", "5"},
               {"Something else", "6/1", "Juan", "23"},
               {"The shadow of your smile", "5/17", "Humberto", "4"},
               {"Just wait for me", "8/22", "Foncho", "12"},
               {"Don't cry for me Argentina", "11/14", "Torcuato",
"11"},
               {"Voyage to the bottom of the Sea", "12/2",
"Filomeno", "4"},
               {"Mars, Jupiter and next...", "10/7", "Alain", "7"},
               {"Neil Armstrong", "5/31", "Rosalind", "11"},
               {"Flatfish++", "6/28", "Lunaro", "13"},
               {"When I saw your face", "12/21", "George W", "18"},
               {"The first time", "9/18", "Kennedy", "2"},
               {"Form Here to Eternity", "1/30", "NIcholson", "9"},
               {"For Whom the Bells Toll", "3/16", "Hemingway", "11"}
           },
           new String [] {
               "Javalobby Title", "Date", "Author", "Reply"
           }
       ));
       jScrollPane1.setViewportView(jTable1);

       org.openide.awt.Mnemonics.setLocalizedText(ReportButton,
"Generate Report");
       ReportButton.addActionListener(new
java.awt.event.ActionListener() {
           public void actionPerformed(java.awt.event.ActionEvent
evt) {
               ReportButtonActionPerformed(evt);
           }
       });

       jRadioButton1.setSelected(true);
       org.openide.awt.Mnemonics.setLocalizedText(jRadioButton1,
"Most Replied");

jRadioButton1.setBorder(javax.swing.BorderFactory.createEmptyBorder(0,
0, 0, 0));
       jRadioButton1.setMargin(new java.awt.Insets(0, 0, 0, 0));
       jRadioButton1.addActionListener(new
java.awt.event.ActionListener() {
           public void actionPerformed(java.awt.event.ActionEvent
evt) {
               jRadioButton1ActionPerformed(evt);
           }
       });

       org.openide.awt.Mnemonics.setLocalizedText(jRadioButton2,
"Least Replied");

jRadioButton2.setBorder(javax.swing.BorderFactory.createEmptyBorder(0,
0, 0, 0));
       jRadioButton2.setMargin(new java.awt.Insets(0, 0, 0, 0));
       jRadioButton2.addActionListener(new
java.awt.event.ActionListener() {
           public void actionPerformed(java.awt.event.ActionEvent
evt) {
               jRadioButton2ActionPerformed(evt);
           }
       });


jPanel1.setBorder(javax.swing.BorderFactory.createEtchedBorder());
       org.openide.awt.Mnemonics.setLocalizedText(jLabel1,
"Executable:");

       org.openide.awt.Mnemonics.setLocalizedText(jButton2,
"Browse...");
       jButton2.addActionListener(new java.awt.event.ActionListener()
{
           public void actionPerformed(java.awt.event.ActionEvent
evt) {
               jButton2ActionPerformed(evt);
           }
       });

       org.jdesktop.layout.GroupLayout jPanel1Layout = new
org.jdesktop.layout.GroupLayout(jPanel1);
       jPanel1.setLayout(jPanel1Layout);
       jPanel1Layout.setHorizontalGroup(

jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
           .add(jPanel1Layout.createSequentialGroup()
               .addContainerGap()
               .add(jLabel1)
               .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
               .add(jTextField1,
org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 330, Short.MAX_VALUE)
               .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
               .add(jButton2)
               .add(16, 16, 16))
       );
       jPanel1Layout.setVerticalGroup(

jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
           .add(jPanel1Layout.createSequentialGroup()
               .add(19, 19, 19)
               .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                   .add(jLabel1)
                   .add(jTextField1,
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE,
org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                   .add(jButton2))
               .addContainerGap(19, Short.MAX_VALUE))
       );

       org.jdesktop.layout.GroupLayout layout = new
org.jdesktop.layout.GroupLayout(this);
       this.setLayout(layout);
       layout.setHorizontalGroup(

layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
           .add(org.jdesktop.layout.GroupLayout.TRAILING,
layout.createSequentialGroup()
               .addContainerGap(188, Short.MAX_VALUE)
               .add(jRadioButton1)
               .add(70, 70, 70)
               .add(jRadioButton2)
               .add(168, 168, 168))
           .add(layout.createSequentialGroup()
               .add(41, 41, 41)
               .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING,
false)
                   .add(org.jdesktop.layout.GroupLayout.TRAILING,
jPanel1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,
org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                   .add(org.jdesktop.layout.GroupLayout.TRAILING,
jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 502,
Short.MAX_VALUE))
               .addContainerGap(37, Short.MAX_VALUE))
           .add(layout.createSequentialGroup()
               .add(242, 242, 242)
               .add(ReportButton,
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 129,
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
               .addContainerGap(215, Short.MAX_VALUE))
       );
       layout.setVerticalGroup(

layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
           .add(layout.createSequentialGroup()
               .addContainerGap()
               .add(jScrollPane1,
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 231,
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
               .add(29, 29, 29)
               .add(jPanel1,
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE,
org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
               .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED,
20, Short.MAX_VALUE)
               .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                   .add(jRadioButton2)
                   .add(jRadioButton1))
               .add(14, 14, 14)
               .add(ReportButton,
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 32,
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
               .add(36, 36, 36))
       );
   }// </editor-fold>

   private void
ReportButtonActionPerformed(java.awt.event.ActionEvent evt)
{
// TODO add your handling code here:
       OOoHelper oooHelper = new OOoHelper();

       //Here we select a cell in the first column (column "0"),
       //so that we know for sure where we are
       //when we start doing all the calculations of what is in which
cell:
       int row = 0;
       int col = 0;
       boolean toggle = false;
       boolean extend = false;
       jTable1.changeSelection(row, col, toggle, extend);

       jTextField1.setText("C:/Program Files/OpenOffice.org 2.3/
program/soffice.exe");

       try {

           //Here a call is made to the method that
           //bootstraps our OpenOffice.org executable:
           Object desktop =
oooHelper.simpleBootstrap(jTextField1.getText());
           if (desktop == null) {
               return;
           }

           //Here the spreadsheet document is created:
           XComponent xSpreadsheetComponent =
                   oooHelper.getSpreadsheetComponent(desktop,
"private:factory/scalc");
           XSpreadsheetDocument xSpreadsheetDocument =

oooHelper.getXSpreadsheetDocument(xSpreadsheetComponent);

           //Here we name our spreadsheet and set it as active
           //(as discussed above, we could also delete the three
default spreadsheets,
           //which would make our spreadsheet the only spreadsheet,
           //which would therefore
           //also be the active spreadsheet):
           XSpreadsheet xSpreadsheet =
oooHelper.getXSpreadsheet(xSpreadsheetDocument,
                   "Javalobby Article Analyzer");
           XSpreadsheet xActiveSpreadsheet =
oooHelper.getXActiveSpreadsheet
                   (xSpreadsheetComponent, xSpreadsheet);

           //Here we set the text content (and text color, as well as
ALL the cells's
           //border line color & width)
           //of all the cells in the first row of the table (the
header):
           oooHelper.setHeaders(xSpreadsheet, "A1", "Javalobby
Title");
           oooHelper.setHeaders(xSpreadsheet, "B1", "Date");
           oooHelper.setHeaders(xSpreadsheet, "C1", "Author");
           oooHelper.setHeaders(xSpreadsheet, "D1", "Reply");

           //Here we find the value of the currently selected cell,
           //which is forced to be the one in the top left, thanks to
the
           //first few lines of this ActionPerformed event,
           //and then we find the value of the columns to the right,
           //which we send to a new method where a column and row are
           //assigned to the value
           //and where a background color is set for even rows.
           for (int i = 0; i < jTable1.getRowCount(); i++) {

               jTable1.setRowSelectionInterval(i,i);
               int position = 1 + i;

               //Get value from table and send to helper method for
rendering:
               String selectedValue = (String) jTable1.getValueAt

(jTable1.getSelectedRow(),jTable1.getSelectedColumn());
               oooHelper.setTextValueOfXCellAtPosition(xSpreadsheet,
0, position,
                       selectedValue);
               oooHelper.setColumnWidth(xSpreadsheet, 0, 10000);

               //Get value from table and send to helper method for
rendering:
               String firstNextToSelectedCell = (String)
jTable1.getValueAt
                       (jTable1.getSelectedRow(),1);
               oooHelper.setTextValueOfXCellAtPosition(xSpreadsheet,
1, position,
                       firstNextToSelectedCell);

               //Get value from table and send to helper method for
rendering:
               String secondNextToSelectedCell = (String)
jTable1.getValueAt
                       (jTable1.getSelectedRow(),2);
               oooHelper.setTextValueOfXCellAtPosition(xSpreadsheet,
2, position,
                       secondNextToSelectedCell);
               oooHelper.setColumnWidth(xSpreadsheet, 2, 3500);

               //Get value from table and send to helper method for
rendering:
               String thirdNextToSelectedCell = (String)
jTable1.getValueAt
                       (jTable1.getSelectedRow(),3);
               oooHelper.setNumValueOfXCellAtPosition(xSpreadsheet,
3, position,
                       Integer.parseInt(thirdNextToSelectedCell));
               oooHelper.setColumnWidth(xSpreadsheet, 3, 1000);

               //Choose all even numbered rows:
               if (position%2 == 0) {
                   //Then set them to a distinct color (orange).
                   oooHelper.setColorRow(xSpreadsheet, position,
0xFF9933);
               }
           }

           //Formula for total calculated and sent for rendering:
           int realRowCount = jTable1.getRowCount() + 1;
           oooHelper.setFormulaOfXCellAtPosition(xSpreadsheet, 3,
realRowCount, "=sum(D1:D" + realRowCount +")");

           //This section is about finding highest and lowest
replies.
           //Here we select D1, (the first cell in the Replies
column),
           //as our starting point, from where we find the highest
value,
           //by comparing the current highest value with the next
selected value.
           //We then identify the cell containing that value and the
author of the article.
           //With some variation, we also calculate the lowest value,
cell, and author.
           //We also add up all the values and calculate the total
value,
           //as the standard way of doing this, although we also have
an OOo formula.
           int repliesCol = 3;
           int repliesRow = 1;
           boolean toggle1 = false;
           boolean extend1 = false;
           jTable1.changeSelection(repliesRow, repliesCol, toggle1,
extend1);
           index_most = -1; //No records looked at yet.
           index_least = -1; //No records looked at yet.
           mostRepliesSoFar = 0;
           leastRepliesSoFar = 0;
           for (int i = 0; i < jTable1.getRowCount(); i++) {
               jTable1.setRowSelectionInterval(i,i);
               String selectedValue = (String)
jTable1.getValueAt(jTable1.getSelectedRow(),
                       jTable1.getSelectedColumn()); //E.g: 16
               int selectedValueAsInt =
Integer.parseInt(selectedValue);
               if (selectedValueAsInt > mostRepliesSoFar) {
                   mostRepliesSoFar = selectedValueAsInt;
                   if (leastRepliesSoFar == 0){
                       leastRepliesSoFar = mostRepliesSoFar;
                   }
                   index_most = i;
                   mostAuthor = (String) jTable1.getValueAt(i,2);
               } else if (selectedValueAsInt < leastRepliesSoFar){
                   leastRepliesSoFar = selectedValueAsInt;
                   index_least = i;
                   leastAuthor = (String) jTable1.getValueAt(i,2);
               }
               //Alternative way (that is, the standard non OOo way)
               //of adding up number of replies to a total.
               totalNumber = totalNumber + selectedValueAsInt;
           }

           //If user wants to see "Most Replies",
           //color the row with most replies green
           //and, below the table, add a cell containing the author
of that article,
           //and color that cell the same green color.
           if (mostRepliesShown == true) {
               oooHelper.setColorRow(xSpreadsheet, index_most+1,
0x008000);
               oooHelper.setTextValueOfXCellAtPosition(xSpreadsheet,
1,
                       jTable1.getRowCount()+5, "Most replies:");
               oooHelper.setTextValueOfXCellAtPosition(xSpreadsheet,
2,
                       jTable1.getRowCount()+5, mostAuthor);
               oooHelper.setColorCell(xSpreadsheet, 2,
jTable1.getRowCount()+5, 0x008000);
           }

           //If user wants to see "Least Replies",
           //color the row with least replies red
           //and, below the table, add a cell containing
           //the author of that article,
           //and color that cell the same red color.
           if (leastRepliesShown == true) {
               oooHelper.setColorRow(xSpreadsheet, index_least+1,
0x800000);
               oooHelper.setTextValueOfXCellAtPosition(xSpreadsheet,
1,
                       jTable1.getRowCount()+6, "Least replies:");
               oooHelper.setTextValueOfXCellAtPosition(xSpreadsheet,
2,
                       jTable1.getRowCount()+6, leastAuthor);
               oooHelper.setColorCell(xSpreadsheet, 2,
jTable1.getRowCount()+6, 0x800000);
           }

       } catch (Exception ex) {
           ex.printStackTrace();
       }

   }

   private void jButton2ActionPerformed(java.awt.event.ActionEvent
evt) {
// TODO add your handling code here:
       jTextField1.setText("C:/Program Files/OpenOffice.org 2.3/
program/soffice.exe");
       JFileChooser fc = new JFileChooser();
       int returnVal = fc.showOpenDialog(this);
       if (returnVal == JFileChooser.APPROVE_OPTION) {
           jTextField1.setText(fc.getSelectedFile().toString());
           jTextField1.setText("C:/Program Files/OpenOffice.org 2.3/
program/soffice.exe");
       }
   }

   private void
jRadioButton2ActionPerformed(java.awt.event.ActionEvent evt)
{
// TODO add your handling code here:
       clickOnLeastRepliesShown = clickOnLeastRepliesShown + 1;

       if (clickOnLeastRepliesShown == 1) {
           leastRepliesShown = false;
           clickOnLeastRepliesShown = clickOnLeastRepliesShown + 1;

       } else if (clickOnLeastRepliesShown > 1) {
           leastRepliesShown = true;
           clickOnLeastRepliesShown = 0;
       }
   }

   private void
jRadioButton1ActionPerformed(java.awt.event.ActionEvent evt)
{
// TODO add your handling code here:
       clickOnMostRepliesShown = clickOnMostRepliesShown + 1;
//By default, the "Most Replies" line is shown in the spreadsheet.
//First time we click this, we want to NOT show this line.
//So, when it is set to 1, we do NOT want to see the line.
//So, we increase the variable 1 further, so that next time it will be
2.

       if (clickOnMostRepliesShown == 1) {
           mostRepliesShown = false;
           clickOnMostRepliesShown = clickOnMostRepliesShown + 1;

           //Else, when the variable is bigger than 1,
           //in other words, when the radiobutton is clicked a 2nd
time,
           //we want to show the "Most Replies" line in the
spreadsheet.
           //So now the variable is bigger than one.
           //We set it back to 0 so that when it is next clicked,
           //the first part of the statement is true again,
           //because then we will have the variable at 1.
       } else if (clickOnMostRepliesShown > 1) {
           mostRepliesShown = true;
           clickOnMostRepliesShown = 0;
}
   }

   // Variables declaration - do not modify
   private javax.swing.JButton ReportButton;
   private javax.swing.JButton jButton2;
   private javax.swing.JLabel jLabel1;
   private javax.swing.JPanel jPanel1;
   private javax.swing.JRadioButton jRadioButton1;
   private javax.swing.JRadioButton jRadioButton2;
   private javax.swing.JScrollPane jScrollPane1;
   private javax.swing.JTable jTable1;
   private javax.swing.JTextField jTextField1;
   // End of variables declaration

   /**
    * Gets default instance. Do not use directly: reserved for
*.settings files only,
    * i.e. deserialization routines; otherwise you could get a non-
deserialized instance.
    * To obtain the singleton instance, use {@link findInstance}.
    */
   public static synchronized JavaLobbyTopComponent getDefault() {
       if (instance == null) {
           instance = new JavaLobbyTopComponent();
       }
       return instance;
   }

   /**
    * Obtain the JavaLobbyTopComponent instance. Never call {@link
#getDefault} directly!
    */
   public static synchronized JavaLobbyTopComponent findInstance() {
       TopComponent win =
WindowManager.getDefault().findTopComponent(PREFERRED_ID);
       if (win == null) {
           ErrorManager.getDefault().log(ErrorManager.WARNING,
"Cannot find JavaLobby component. It will not be located properly in
the window system.");
           return getDefault();
       }
       if (win instanceof JavaLobbyTopComponent) {
           return (JavaLobbyTopComponent)win;
       }
       ErrorManager.getDefault().log(ErrorManager.WARNING, "There
seem to be multiple components with the '" + PREFERRED_ID + "' ID.
That is a potential source of errors and unexpected behavior.");
       return getDefault();
   }

   public int getPersistenceType() {
       return TopComponent.PERSISTENCE_ALWAYS;
   }

   public void componentOpened() {
       // TODO add custom code on component opening
   }

   public void componentClosed() {
       // TODO add custom code on component closing
   }

   /** replaces this in object stream */
   public Object writeReplace() {
       return new ResolvableHelper();
   }

   protected String preferredID() {
       return PREFERRED_ID;
   }

   final static class ResolvableHelper implements Serializable {
       private static final long serialVersionUID = 1L;
       public Object readResolve() {
           return JavaLobbyTopComponent.getDefault();
       }
   }

}


Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.