/********************************************************************************************* * Copyright (c) 2014-2015 Software Behaviour Analysis Lab, Concordia University, Montreal, Canada * * All rights reserved. This program and the accompanying materials * are made available under the terms of Eclipse Public License v1.0 License which * accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Syed Shariyar Murtaza -- Initial design and implementation **********************************************************************************************/ package org.eclipse.tracecompass.totalads.ui.io; import org.eclipse.tracecompass.totalads.ui.io.Messages; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.FileDialog; import org.eclipse.swt.widgets.Text; import org.eclipse.swt.events.KeyAdapter; import org.eclipse.swt.events.MouseAdapter; import org.eclipse.swt.events.MouseEvent; import org.eclipse.swt.events.KeyEvent; /** * This class takes care of the file browsing on a hard disk * * @author <p> * Syed Shariyar Murtaza justsshary@hotmail.com * </p> * */ public class FileBrowser { private Button fBtnTraceBrowser; private Composite fParent; private Text fTxtPath; /** * Constructor * * @param parent * Composite object * @param txtBox * Text box * @param gridData * Grid layout */ public FileBrowser(Composite parent, Text txtBox, GridData gridData) { this.fTxtPath = txtBox; this.fParent = parent; fBtnTraceBrowser = new Button(parent, SWT.NONE); fBtnTraceBrowser.setLayoutData(gridData); fBtnTraceBrowser.setText(Messages.FileBrowser_Browse); fBtnTraceBrowser.addMouseListener(new MouseUpEvent()); fBtnTraceBrowser.addKeyListener(new KeyPressEvent()); } /** * Constructor * * @param parent * Composite * @param gridData * Grid layout */ public FileBrowser(Composite parent, GridData gridData) { this.fParent = parent; fBtnTraceBrowser = new Button(parent, SWT.NONE); fBtnTraceBrowser.setLayoutData(gridData); fBtnTraceBrowser.setText(Messages.FileBrowser_BrowseTraces); fBtnTraceBrowser.addMouseListener(new MouseUpEvent()); fBtnTraceBrowser.addKeyListener(new KeyPressEvent()); } /** * Sets the trace path text box to a local variable, which is updated when a * user clicks browse * * @param text * Text box */ public void setTextBox(Text text) { this.fTxtPath = text; } /** * Disables the Browse button */ public void disableBrowsing() { this.fBtnTraceBrowser.setEnabled(false); } /** * Enables browsing */ public void enableBrowsing() { this.fBtnTraceBrowser.setEnabled(true); } /** * Method to open file dialog box */ private void fileDialogBox() { FileDialog fD = new FileDialog(fParent.getShell(), SWT.OPEN); fD.setText(Messages.FileBrowser_Open); if (!fTxtPath.getText().isEmpty()) { fD.setFilterPath(fTxtPath.getText()); } String path = fD.open(); if (path != null) { this.fTxtPath.setText(path); } } // /////////////////////////////////////////////////////////////////////////////////// // // Inner classes (event handlers) for listeners of GUI elements (widgets) // // ///////////////////////////////////////////////////////////////////////////////// /** Inner class for mouse up event on the button */ private class MouseUpEvent extends MouseAdapter { @Override public void mouseUp(MouseEvent e) { fileDialogBox(); } } /** Inner class for name press event on the button */ private class KeyPressEvent extends KeyAdapter { @Override public void keyPressed(KeyEvent e) { fileDialogBox(); } } }