/*******************************************************************************
* All Right Reserved. Copyright (c) 1998, 2004 Jackwind Li Guojie
*
* Created on 2004-6-21 18:48:57 by JACK $Id$
*
******************************************************************************/
import java.io.File;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.ToolBarManager;
import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.ole.win32.OLE;
import org.eclipse.swt.ole.win32.OleAutomation;
import org.eclipse.swt.ole.win32.OleClientSite;
import org.eclipse.swt.ole.win32.OleControlSite;
import org.eclipse.swt.ole.win32.OleFrame;
import org.eclipse.swt.ole.win32.Variant;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.Shell;
public class WordOLE extends ApplicationWindow {
OleFrame oleFrame;
OleClientSite clientSite;
OleControlSite controlSite;
/**
* @param parentShell
*/
public WordOLE(Shell parentShell) {
super(parentShell);
addMenuBar();
addToolBar(SWT.FLAT);
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.window.Window#createContents(org.eclipse.swt.widgets.Composite)
*/
protected Control createContents(Composite parent) {
Composite composite = new Composite(parent, SWT.NULL);
composite.setLayout(new FillLayout());
oleFrame = new OleFrame(composite, SWT.NULL);
if (getMenuBarManager() != null) {
MenuItem windowMenu =
new MenuItem(getMenuBarManager().getMenu(), SWT.CASCADE);
windowMenu.setText("[Window]");
MenuItem containerMenu =
new MenuItem(getMenuBarManager().getMenu(), SWT.CASCADE);
containerMenu.setText("[Container]");
MenuItem fileMenu =
new MenuItem(getMenuBarManager().getMenu(), SWT.CASCADE);
fileMenu.setText("[File]");
oleFrame.setWindowMenus(new MenuItem[] { windowMenu });
oleFrame.setContainerMenus(new MenuItem[] { containerMenu });
oleFrame.setFileMenus(new MenuItem[] { fileMenu });
System.out.println("menu set");
}
clientSite =
new OleClientSite(oleFrame, SWT.NULL, new File("test.doc"));
// clientSite = new OleClientSite(oleFrame, SWT.NONE,
// "Word.Document.8");
// clientSite = new OleControlSite(oleFrame, SWT.NONE,
// "Word.Document.8");
System.out.println(clientSite.getProgramID() + ", " + clientSite);
clientSite.doVerb(OLE.OLEIVERB_SHOW);
return composite;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.window.ApplicationWindow#createToolBarManager(int)
*/
protected ToolBarManager createToolBarManager(int style) {
ToolBarManager manager = new ToolBarManager(style);
Action actionSaveAs = new Action("Save as") {
public void run() {
FileDialog dialog = new FileDialog(getShell(), SWT.SAVE);
String path = dialog.open();
if (path != null) {
if (clientSite.save(new File(path), false)) {
System.out.println("Saved to file successfully.");
} else {
System.err.println("Failed to save to file");
}
}
}
};
Action actionDeactivate = new Action("Deactivate") {
public void run() {
clientSite.deactivateInPlaceClient();
}
};
Action actionSpellCheck = new Action("Spell check") {
public void run() {
if ((clientSite.queryStatus(OLE.OLECMDID_SPELL)
& OLE.OLECMDF_ENABLED)
!= 0) {
clientSite.exec(
OLE.OLECMDID_SPELL,
OLE.OLECMDEXECOPT_PROMPTUSER,
null,
null);
}
}
};
Action actionOAGetSpellingChecked = new Action("OA: Get SpellingChecked") {
public void run() {
OleAutomation automation = new OleAutomation(clientSite);
// looks up the ID for property SpellingChecked.
int[] propertyIDs = automation.getIDsOfNames(new String[]{"SpellingChecked"});
int propertyID = propertyIDs[0];
Variant result = automation.getProperty(propertyID);
System.out.println("SpellingChecked: " + result.getBoolean());
automation.dispose();
}
};
Action actionOASetSpellingChecked = new Action("OA: Set SpellingChecked") {
public void run() {
OleAutomation automation = new OleAutomation(clientSite);
// looks up the ID for property SpellingChecked.
int[] propertyIDs = automation.getIDsOfNames(new String[]{"SpellingChecked"});
int propertyID = propertyIDs[0];
boolean result = automation.setProperty(propertyID, new Variant(true));
System.out.println(result ? "Successful" : "Failed");
automation.dispose();
}
};
Action actionOAInvokePrintPreview = new Action("OA: Invoke Select") {
public void run() {
OleAutomation automation = new OleAutomation(clientSite);
// looks up the ID for method Select.
int[] methodIDs = automation.getIDsOfNames(new String[]{"Select"});
int methodID = methodIDs[0];
Variant result = automation.invoke(methodID);
System.out.println(result != null ? "Successful" : "Failed");
System.out.println(result);
automation.dispose();
}
};
manager.add(actionSaveAs);
manager.add(actionDeactivate);
manager.add(actionSpellCheck);
manager.add(actionOAGetSpellingChecked);
manager.add(actionOASetSpellingChecked);
manager.add(actionOAInvokePrintPreview);
return manager;
}
public static void main(String[] args) {
WordOLE wordOLE = new WordOLE(null);
wordOLE.setBlockOnOpen(true);
wordOLE.open();
Display.getCurrent().dispose();
}
}
|