/******************************************************************************* * Copyright (c) 2007 Exadel, Inc. and Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is 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: * Exadel, Inc. and Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.common.model.ui.attribute.editor; import java.io.File; import org.jboss.tools.common.model.ui.attribute.adapter.FileChooserAdapter; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.FileDialog; import org.eclipse.swt.widgets.Shell; import org.jboss.tools.common.model.ui.widgets.IWidgetSettings; public class FileFieldEditorEx extends DirectoryFieldEditorEx { public FileFieldEditorEx() {} public FileFieldEditorEx(IWidgetSettings settings) { super(settings); } protected void init() { super.init(); } public int getNumberOfControls() { return 2; } public Object callExternal(Shell shell) { FileDialog dialog = new FileDialog(shell, SWT.OPEN); String[] extensions = null; String[] filenames = null; if(propertyEditor != null && propertyEditor.getValue() != null) { Object v = propertyEditor.getValue(); String fp = (v == null) ? null : v.toString(); if(fp != null && fp.length() > 0) { File f = new File(fp); File p = f.getParentFile(); if(p != null && p.exists()) { dialog.setFilterPath(p.getAbsolutePath()); } else { if (lastPath != null && new File(lastPath).exists()) dialog.setFilterPath(lastPath); } dialog.setFileName(f.getName()); } FileChooserAdapter adapter = (FileChooserAdapter)propertyEditor.getAdapter(FileChooserAdapter.class); if(adapter != null) { extensions = adapter.getExtensions(); filenames = adapter.getFileNames(); } } if(propertyEditor == null || propertyEditor.getValue() == null || propertyEditor.getValue().toString().trim().length() == 0) { if (lastPath != null && new File(lastPath).exists()) { dialog.setFilterPath(lastPath); } else { FileChooserAdapter adapter = (FileChooserAdapter)propertyEditor.getAdapter(FileChooserAdapter.class); if(adapter != null) { String filterPath = adapter.getFilterPath(); if(filterPath != null && new File(filterPath).exists()) { dialog.setFilterPath(filterPath); } } } } if (extensions != null) dialog.setFilterExtensions(extensions); if (filenames != null) dialog.setFilterNames(filenames); return dialog.open(); } protected String changePressed() { Object v = callExternal(getShell()); return (v == null) ? null : v.toString(); } }