1*a1b4a26bSAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*a1b4a26bSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*a1b4a26bSAndrew Rist * or more contributor license agreements. See the NOTICE file 5*a1b4a26bSAndrew Rist * distributed with this work for additional information 6*a1b4a26bSAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*a1b4a26bSAndrew Rist * to you under the Apache License, Version 2.0 (the 8*a1b4a26bSAndrew Rist * "License"); you may not use this file except in compliance 9*a1b4a26bSAndrew Rist * with the License. You may obtain a copy of the License at 10*a1b4a26bSAndrew Rist * 11*a1b4a26bSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*a1b4a26bSAndrew Rist * 13*a1b4a26bSAndrew Rist * Unless required by applicable law or agreed to in writing, 14*a1b4a26bSAndrew Rist * software distributed under the License is distributed on an 15*a1b4a26bSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*a1b4a26bSAndrew Rist * KIND, either express or implied. See the License for the 17*a1b4a26bSAndrew Rist * specific language governing permissions and limitations 18*a1b4a26bSAndrew Rist * under the License. 19*a1b4a26bSAndrew Rist * 20*a1b4a26bSAndrew Rist *************************************************************/ 21*a1b4a26bSAndrew Rist 22*a1b4a26bSAndrew Rist 23cdf0e10cSrcweir package com.sun.star.wizards.ui; 24cdf0e10cSrcweir 25cdf0e10cSrcweir import com.sun.star.awt.XTextComponent; 26cdf0e10cSrcweir import com.sun.star.lang.XMultiServiceFactory; 27cdf0e10cSrcweir import com.sun.star.uno.Exception; 28cdf0e10cSrcweir import com.sun.star.wizards.common.FileAccess; 29cdf0e10cSrcweir import com.sun.star.wizards.common.PropertyNames; 30cdf0e10cSrcweir import com.sun.star.wizards.common.SystemDialog; 31cdf0e10cSrcweir 32cdf0e10cSrcweir public class PathSelection 33cdf0e10cSrcweir { 34cdf0e10cSrcweir 35cdf0e10cSrcweir UnoDialog2 CurUnoDialog; 36cdf0e10cSrcweir XMultiServiceFactory xMSF; 37cdf0e10cSrcweir int iDialogType; 38cdf0e10cSrcweir int iTransferMode; 39cdf0e10cSrcweir public String sDefaultDirectory = PropertyNames.EMPTY_STRING; 40cdf0e10cSrcweir public String sDefaultName = PropertyNames.EMPTY_STRING; 41cdf0e10cSrcweir public String sDefaultFilter = PropertyNames.EMPTY_STRING; 42cdf0e10cSrcweir public boolean usedPathPicker = false; 43cdf0e10cSrcweir public XPathSelectionListener xAction; 44cdf0e10cSrcweir public XTextComponent xSaveTextBox; 45cdf0e10cSrcweir private final int CMDSELECTPATH = 1; 46cdf0e10cSrcweir private final int TXTSAVEPATH = 1; 47cdf0e10cSrcweir 48cdf0e10cSrcweir public static class DialogTypes 49cdf0e10cSrcweir { 50cdf0e10cSrcweir 51cdf0e10cSrcweir public static final int FOLDER = 0; 52cdf0e10cSrcweir public static final int FILE = 1; 53cdf0e10cSrcweir } 54cdf0e10cSrcweir 55cdf0e10cSrcweir public static class TransferMode 56cdf0e10cSrcweir { 57cdf0e10cSrcweir 58cdf0e10cSrcweir public static final int SAVE = 0; 59cdf0e10cSrcweir public static final int LOAD = 1; 60cdf0e10cSrcweir } 61cdf0e10cSrcweir 62cdf0e10cSrcweir public PathSelection(XMultiServiceFactory xMSF, UnoDialog2 CurUnoDialog, int TransferMode, int DialogType) 63cdf0e10cSrcweir { 64cdf0e10cSrcweir this.CurUnoDialog = CurUnoDialog; 65cdf0e10cSrcweir this.xMSF = xMSF; 66cdf0e10cSrcweir this.iDialogType = DialogType; 67cdf0e10cSrcweir this.iTransferMode = TransferMode; 68cdf0e10cSrcweir 69cdf0e10cSrcweir } 70cdf0e10cSrcweir 71cdf0e10cSrcweir public void insert(int DialogStep, int XPos, int YPos, int Width, short CurTabIndex, String LabelText, boolean Enabled, String TxtHelpURL, String BtnHelpURL) 72cdf0e10cSrcweir { 73cdf0e10cSrcweir 74cdf0e10cSrcweir CurUnoDialog.insertControlModel("com.sun.star.awt.UnoControlFixedTextModel", "lblSaveAs", new String[] 75cdf0e10cSrcweir { 76cdf0e10cSrcweir PropertyNames.PROPERTY_ENABLED, PropertyNames.PROPERTY_HEIGHT, PropertyNames.PROPERTY_LABEL, PropertyNames.PROPERTY_POSITION_X, PropertyNames.PROPERTY_POSITION_Y, PropertyNames.PROPERTY_STEP, PropertyNames.PROPERTY_TABINDEX, PropertyNames.PROPERTY_WIDTH 77cdf0e10cSrcweir }, new Object[] 78cdf0e10cSrcweir { 79cdf0e10cSrcweir Boolean.valueOf(Enabled), 8, LabelText, new Integer(XPos), new Integer(YPos), new Integer(DialogStep), new Short(CurTabIndex), new Integer(Width) 80cdf0e10cSrcweir }); 81cdf0e10cSrcweir 82cdf0e10cSrcweir xSaveTextBox = CurUnoDialog.insertTextField("txtSavePath", "callXPathSelectionListener", this, new String[] 83cdf0e10cSrcweir { 84cdf0e10cSrcweir PropertyNames.PROPERTY_ENABLED, PropertyNames.PROPERTY_HEIGHT, PropertyNames.PROPERTY_HELPURL, PropertyNames.PROPERTY_POSITION_X, PropertyNames.PROPERTY_POSITION_Y, PropertyNames.PROPERTY_STEP, PropertyNames.PROPERTY_TABINDEX, PropertyNames.PROPERTY_WIDTH 85cdf0e10cSrcweir }, new Object[] 86cdf0e10cSrcweir { 87cdf0e10cSrcweir Boolean.valueOf(Enabled), 12, TxtHelpURL, new Integer(XPos), new Integer(YPos + 10), new Integer(DialogStep), new Short((short) (CurTabIndex + 1)), new Integer(Width - 26) 88cdf0e10cSrcweir }); 89cdf0e10cSrcweir //CurUnoDialog.setControlProperty("txtSavePath", PropertyNames.READ_ONLY, Boolean.TRUE); 90cdf0e10cSrcweir CurUnoDialog.setControlProperty("txtSavePath", PropertyNames.PROPERTY_ENABLED, Boolean.FALSE); 91cdf0e10cSrcweir CurUnoDialog.insertButton("cmdSelectPath", "triggerPathPicker", this, new String[] 92cdf0e10cSrcweir { 93cdf0e10cSrcweir PropertyNames.PROPERTY_ENABLED, PropertyNames.PROPERTY_HEIGHT, PropertyNames.PROPERTY_HELPURL, PropertyNames.PROPERTY_LABEL, PropertyNames.PROPERTY_POSITION_X, PropertyNames.PROPERTY_POSITION_Y, PropertyNames.PROPERTY_STEP, PropertyNames.PROPERTY_TABINDEX, PropertyNames.PROPERTY_WIDTH 94cdf0e10cSrcweir }, new Object[] 95cdf0e10cSrcweir { 96cdf0e10cSrcweir Boolean.valueOf(Enabled), 14, BtnHelpURL, "...", new Integer(XPos + Width - 16), new Integer(YPos + 9), new Integer(DialogStep), new Short((short) (CurTabIndex + 2)), 16 97cdf0e10cSrcweir }); 98cdf0e10cSrcweir 99cdf0e10cSrcweir } 100cdf0e10cSrcweir 101cdf0e10cSrcweir public void addSelectionListener(XPathSelectionListener xAction) 102cdf0e10cSrcweir { 103cdf0e10cSrcweir this.xAction = xAction; 104cdf0e10cSrcweir } 105cdf0e10cSrcweir 106cdf0e10cSrcweir public String getSelectedPath() 107cdf0e10cSrcweir { 108cdf0e10cSrcweir return xSaveTextBox.getText(); 109cdf0e10cSrcweir } 110cdf0e10cSrcweir 111cdf0e10cSrcweir public void initializePath() 112cdf0e10cSrcweir { 113cdf0e10cSrcweir try 114cdf0e10cSrcweir { 115cdf0e10cSrcweir FileAccess myFA = new FileAccess(xMSF); 116cdf0e10cSrcweir xSaveTextBox.setText(myFA.getPath(sDefaultDirectory + "/" + sDefaultName, null)); 117cdf0e10cSrcweir } 118cdf0e10cSrcweir catch (Exception e) 119cdf0e10cSrcweir { 120cdf0e10cSrcweir e.printStackTrace(); 121cdf0e10cSrcweir } 122cdf0e10cSrcweir } 123cdf0e10cSrcweir 124cdf0e10cSrcweir public void triggerPathPicker() 125cdf0e10cSrcweir { 126cdf0e10cSrcweir try 127cdf0e10cSrcweir { 128cdf0e10cSrcweir switch (iTransferMode) 129cdf0e10cSrcweir { 130cdf0e10cSrcweir case TransferMode.SAVE: 131cdf0e10cSrcweir switch (iDialogType) 132cdf0e10cSrcweir { 133cdf0e10cSrcweir case DialogTypes.FOLDER: 134cdf0e10cSrcweir //TODO: write code for picking a folder for saving 135cdf0e10cSrcweir break; 136cdf0e10cSrcweir case DialogTypes.FILE: 137cdf0e10cSrcweir usedPathPicker = true; 138cdf0e10cSrcweir SystemDialog myFilePickerDialog = SystemDialog.createStoreDialog(xMSF); 139cdf0e10cSrcweir myFilePickerDialog.callStoreDialog(sDefaultDirectory, sDefaultName, sDefaultFilter); 140cdf0e10cSrcweir String sStorePath = myFilePickerDialog.sStorePath; 141cdf0e10cSrcweir if (sStorePath != null) 142cdf0e10cSrcweir { 143cdf0e10cSrcweir FileAccess myFA = new FileAccess(xMSF); 144cdf0e10cSrcweir xSaveTextBox.setText(myFA.getPath(sStorePath, null)); 145cdf0e10cSrcweir sDefaultDirectory = FileAccess.getParentDir(sStorePath); 146cdf0e10cSrcweir sDefaultName = myFA.getFilename(sStorePath); 147cdf0e10cSrcweir } 148cdf0e10cSrcweir break; 149cdf0e10cSrcweir default: 150cdf0e10cSrcweir break; 151cdf0e10cSrcweir } 152cdf0e10cSrcweir break; 153cdf0e10cSrcweir case TransferMode.LOAD: 154cdf0e10cSrcweir switch (iDialogType) 155cdf0e10cSrcweir { 156cdf0e10cSrcweir case DialogTypes.FOLDER: 157cdf0e10cSrcweir //TODO: write code for picking a folder for loading 158cdf0e10cSrcweir break; 159cdf0e10cSrcweir case DialogTypes.FILE: 160cdf0e10cSrcweir //TODO: write code for picking a file for loading 161cdf0e10cSrcweir break; 162cdf0e10cSrcweir default: 163cdf0e10cSrcweir break; 164cdf0e10cSrcweir } 165cdf0e10cSrcweir break; 166cdf0e10cSrcweir default: 167cdf0e10cSrcweir break; 168cdf0e10cSrcweir } 169cdf0e10cSrcweir } 170cdf0e10cSrcweir catch (Exception e) 171cdf0e10cSrcweir { 172cdf0e10cSrcweir // TODO Auto-generated catch block 173cdf0e10cSrcweir e.printStackTrace(); 174cdf0e10cSrcweir } 175cdf0e10cSrcweir } 176cdf0e10cSrcweir 177cdf0e10cSrcweir public void callXPathSelectionListener() 178cdf0e10cSrcweir { 179cdf0e10cSrcweir if (xAction != null) 180cdf0e10cSrcweir { 181cdf0e10cSrcweir xAction.validatePath(); 182cdf0e10cSrcweir } 183cdf0e10cSrcweir } 184cdf0e10cSrcweir } 185