Package

Source Code of OfficeCommand

/*************************************************************************
*
*  $RCSfile: OfficeCommand.java,v $
*
*  $Revision: 1.3 $
*
*  last change: $Author: hr $ $Date: 2003/06/30 15:29:38 $
*
*  The Contents of this file are made available subject to the terms of
*  the BSD license.
*  Copyright (c) 2003 by Sun Microsystems, Inc.
*  All rights reserved.
*
*  Redistribution and use in source and binary forms, with or without
*  modification, are permitted provided that the following conditions
*  are met:
*  1. Redistributions of source code must retain the above copyright
*     notice, this list of conditions and the following disclaimer.
*  2. Redistributions in binary form must reproduce the above copyright
*     notice, this list of conditions and the following disclaimer in the
*     documentation and/or other materials provided with the distribution.
*  3. Neither the name of Sun Microsystems, Inc. nor the names of its
*     contributors may be used to endorse or promote products derived
*     from this software without specific prior written permission.
*
*  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
*  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
*  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
*  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
*  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
*  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
*  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
*  OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
*  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
*  TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
*  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*    
*************************************************************************/

import java.util.List;
import java.util.ArrayList;

import com.sun.star.frame.XDispatch;
import com.sun.star.beans.PropertyValue;
import com.sun.star.beans.PropertyState;
import com.sun.star.util.URL;

/**
* This class reprecents an office slot command.
*/
public class OfficeCommand
{
  private short  mSlot;
  private List  mProps  = new ArrayList();

  /**
   * Constructor.
   *
   * @param slot The office slot identifier.
   * @param args The arguments of the office slot command.
   */
  public OfficeCommand(short slot, PropertyValue args[])
  {
    mSlot  = slot;
    for (int idx = 0; idx < args.length; idx += 1) {
      mProps.add(args[idx]);
    }
  }

  /**
   * Constructor.
   *
   * @param slot The office slot identifier.
   */
  public OfficeCommand(short slot)
  {
    mSlot  = slot;
  }

  /**
   * Appends an office slot command parameter.
   *
   * @param name The parameter name.
   * @param value The parameter value.
   */
  public synchronized void appendParameter(String name, Object value)
  {
    mProps.add(new PropertyValue(name, 0, value,
      PropertyState.DIRECT_VALUE));
  }

  /**
   * Executes the command on the specified office instance.
   *
   * @param office The office instance which is the target of the command.
   */
  public synchronized void execute(BasicOfficeBean office)
  {
    synchronized(office) {  // avoid conflicts with connect/disconnect...
      // ... do the job
      URL[]  url  = new URL[1];
      url[0= new URL("slot:" + Short.toString(mSlot),
        "",      // string Main
        "",      // string Protocol
        "",      // string User
        "",      // string Password
        "",      // string Server
        (short)0// short Port
        "",      // string Path
        "",      // string Name
        "",      // string Arguments
        "");    // string Mark
      office.mURLTransformer.parseSmart(url, "slot");
      // workaround bug in dispatch
      url[0].Complete  = url[0].Main;
      XDispatch  dispatcher  = office.mDispatcher.queryDispatch(
        url[0], "", 0);
      dispatcher.dispatch(url[0], (PropertyValue[])mProps.toArray(
        new PropertyValue[mProps.size()]));
    }
    // Good things come to those who wait...
    notifyAll();
  }
}
TOP

Related Classes of OfficeCommand

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.