/* * (C) Copyright 2006 Nuxeo SAS * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Nuxeo - initial API and implementation */ package org.eparapher.rcp.preferences; import org.apache.log4j.Logger; import org.eclipse.jface.preference.BooleanFieldEditor; import org.eclipse.jface.preference.DirectoryFieldEditor; import org.eclipse.jface.preference.FieldEditorPreferencePage; import org.eclipse.jface.preference.StringFieldEditor; import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.swt.SWT; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPreferencePage; import org.eparapher.core.EParapherManager; import org.eparapher.core.tools.OODaemonManager; import org.eparapher.rcp.Activator; public class OpenOfficeEditorPreferences extends FieldEditorPreferencePage implements IWorkbenchPreferencePage { public static final String ID = "org.eparapher.rcp.preferences.OpenOfficeEditorPreferences"; private static Logger log = Logger.getLogger(OpenOfficeEditorPreferences.class); DirectoryFieldEditor localopenofficepath; DirectoryFieldEditor localopenofficebinarypath; StringFieldEditor openofficeoptions; BooleanFieldEditor startOOfficeAtStartup; BooleanFieldEditor useLocalOODaemon; StringFieldEditor openfficeDaemonServerName; StringFieldEditor openofficeDaemonServerPort; public OpenOfficeEditorPreferences() { super(GRID); setPreferenceStore(Activator.getDefault().getPreferenceStore()); setDescription("Configuration for OpenOffice PDF Converter"); } protected void createFieldEditors() { useLocalOODaemon = new BooleanFieldEditor(PreferenceConstants.P_OO_USELOCAL,"&Use Local OpenOffice Daemon.", SWT.NONE, getFieldEditorParent()); addField(useLocalOODaemon); openfficeDaemonServerName = new StringFieldEditor( PreferenceConstants.P_OO_SERVERNAME, "OpenOffice daemon server &IP/DNS :", getFieldEditorParent()); addField(openfficeDaemonServerName); openofficeDaemonServerPort = new StringFieldEditor( PreferenceConstants.P_OO_SERVERPORT, "OpenOffice daemon server &port :", getFieldEditorParent()); addField(openofficeDaemonServerPort); startOOfficeAtStartup = new BooleanFieldEditor(PreferenceConstants.P_LOCALOO_AUTOSTART,"&Start OpenOffice daemon locally as a pdf converter when eParapher starts.", SWT.NONE, getFieldEditorParent()); addField(startOOfficeAtStartup); localopenofficebinarypath = new DirectoryFieldEditor( PreferenceConstants.P_LOCALOOBINPATH, "Open Office &binary dir :", getFieldEditorParent()); //String[] oofilefilter = {"soffice"}; //localopenofficebinarypath.setFileExtensions(oofilefilter); addField(localopenofficebinarypath); localopenofficepath = new DirectoryFieldEditor( PreferenceConstants.P_LOCALOOLIBPATH, "Open Office &library dir :", getFieldEditorParent()); addField(localopenofficepath); openofficeoptions = new StringFieldEditor( PreferenceConstants.P_LOCALOOOPTIONS, "Open Office daemon parameters :", getFieldEditorParent()); openofficeoptions.setEnabled(false, getFieldEditorParent()); openofficeoptions.setStringValue(OODaemonManager.getInstance().getsofficeParameters()); addField(openofficeoptions); if (EParapherManager.getInstance().getSettings().useLocalOpenOffice()) { openfficeDaemonServerName.setEnabled(false, getFieldEditorParent()); startOOfficeAtStartup.setEnabled(true, getFieldEditorParent()); localopenofficebinarypath.setEnabled(true, getFieldEditorParent()); localopenofficepath.setEnabled(true, getFieldEditorParent()); } else { openfficeDaemonServerName.setEnabled(true, getFieldEditorParent()); startOOfficeAtStartup.setEnabled(false, getFieldEditorParent()); localopenofficebinarypath.setEnabled(false, getFieldEditorParent()); localopenofficepath.setEnabled(false, getFieldEditorParent()); } } public void propertyChange(PropertyChangeEvent event) { super.propertyChange(event); String selectedvalue = (String) event.getNewValue().toString(); String oldselectedvalue = (String) event.getOldValue().toString(); if (!selectedvalue.equals(oldselectedvalue)) { if (event.getSource() instanceof BooleanFieldEditor) { BooleanFieldEditor changedbfe = (BooleanFieldEditor) event.getSource(); String prefname = changedbfe.getPreferenceName(); //If not overwriting file, can access extention if (prefname.equals(PreferenceConstants.P_OO_USELOCAL)) if (selectedvalue.equals("true")) { openfficeDaemonServerName.setEnabled(false, getFieldEditorParent()); openfficeDaemonServerName.setStringValue("127.0.0.1"); //openofficeDaemonServerPort.setEnabled(true, getFieldEditorParent()); startOOfficeAtStartup.setEnabled(true, getFieldEditorParent()); localopenofficebinarypath.setEnabled(true, getFieldEditorParent()); localopenofficepath.setEnabled(true, getFieldEditorParent()); openofficeoptions.setStringValue("Please click on Apply"); } else { openfficeDaemonServerName.setEnabled(true, getFieldEditorParent()); //openofficeDaemonServerPort.setEnabled(true, getFieldEditorParent()); startOOfficeAtStartup.setEnabled(false, getFieldEditorParent()); localopenofficebinarypath.setEnabled(false, getFieldEditorParent()); localopenofficepath.setEnabled(false, getFieldEditorParent()); openofficeoptions.setStringValue("Please click on Apply"); } } } } public void init(IWorkbench workbench) { } public boolean performOk() { //First, save properties boolean save = super.performOk(); //TODO : verify if binary soffice or soffice.exe is in PreferenceConstants.P_LOCALOOBINPATH openofficeoptions.setStringValue(OODaemonManager.getInstance().getsofficeParameters()); //TODO : restart OO if needed if (EParapherManager.getInstance().getSettings().isOpenOfficeAutostart()) { OODaemonManager.getInstance().stop(); } return save; } }