xml.project.app.ProjectAccessDialog.java Source code

Java tutorial

Introduction

Here is the source code for xml.project.app.ProjectAccessDialog.java

Source

/*
 * PRONET_GUI Project - Planning Platform for Roadside Networks
 * Field of Research: Intelligent Transportation Systems (ITS)
 * 
 * Supervisor: Robil Daher
 *             Assoc. Prof. Dr.-Ing.
 * Institution:  ITS-WG | Networks Department | German University in Cairo (GUC)
 *
 * Date/Time: 28.05.2014 - 20:51:06
 * Version 0.0.1
 *
 * (Planned) to be released under the GPLv2 open source license
 *-------------------------------------------------------------------
 */

package xml.project.app;

import java.nio.file.DirectoryStream;
import java.nio.file.Path;
import java.nio.file.Paths;

import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.TitleAreaDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.jface.viewers.ComboViewer;
import org.eclipse.wb.swt.SWTResourceManager;

import xml.project.app.gui.DOMMethodBuilder;
import xml.project.app.gui.FrontendGUI;
import xml.project.app.gui.JAXBMethodBuilder;
import xml.project.app.gui.JDOMMethodBuilder;

import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;

/**
 * @author Ahmed Badr
 * 
 */
class ProjectAccessDialog extends TitleAreaDialog {

    private Combo combo;
    private Text txtWorkspacename;

    private WorkspaceAccess pronetWorkspace;

    private String selectedFileName;

    private Composite area;
    private Composite container;
    private ActionType actionName;

    /**
     * Create the dialog.
     * 
     * @param parentShell
     */
    public ProjectAccessDialog(Shell parentShell, WorkspaceAccess pronetWorkspace, ActionType actionName) {
        super(parentShell);

        this.pronetWorkspace = pronetWorkspace;
        this.actionName = actionName;
        this.selectedFileName = pronetWorkspace.currentFileName();
    }

    /**
     * Create contents of the dialog.
     * 
     * @param parent
     */
    @Override
    protected Control createDialogArea(Composite parent) {

        if (actionName.equals(ActionType.OPEN_FILE)) {
            area = (Composite) super.createDialogArea(parent);
            container = new Composite(area, SWT.NONE);
            container.setLayout(new GridLayout(2, false));
            container.setLayoutData(new GridData(GridData.FILL_BOTH));
            this.setTitle("XML-Editor");

            this.setMessage("Load XML File");

            {
                final Label lblProject = new Label(container, SWT.NONE);
                lblProject.setText("File Name");
                ComboViewer comboViewer = new ComboViewer(container, SWT.READ_ONLY);
                combo = comboViewer.getCombo();
                combo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
                loadFilesList(combo);
            }

            {
                final Label lblWorkspace = new Label(container, SWT.NONE);
                lblWorkspace.setText("Workspace");
                txtWorkspacename = new Text(container, SWT.BORDER);
                txtWorkspacename.setBackground(SWTResourceManager.getColor(SWT.COLOR_WIDGET_LIGHT_SHADOW));
                txtWorkspacename.setEditable(false);
                txtWorkspacename.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
                txtWorkspacename.setText(pronetWorkspace.projectWorkspace().toString());
            }
        }
        return area;
    }

    /**
     * Create contentopenProjectAccessDialogs of the button bar.
     * 
     * @param parent
     */
    @Override
    protected void createButtonsForButtonBar(Composite parent) {
        Button buttonOK = createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, false);
        buttonOK.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {

                switch (actionName) {
                case NEW_FILE:
                case OPEN_FILE:
                    if (!selectedFileName.isEmpty()) {
                        pronetWorkspace.setCurrentFileName(selectedFileName);
                        FrontendGUI.shlApplication.setText("XML-Editor" + " | "
                                + selectedFileName.substring(0, selectedFileName.length() - 4));
                        FrontendGUI.setCurrentFilePath(
                                Paths.get(pronetWorkspace.projectWorkspace().toString(), selectedFileName));
                        JAXBMethodBuilder.textJAXBFileName.setText(selectedFileName);
                        DOMMethodBuilder.textDOMFileName.setText(selectedFileName);
                        JDOMMethodBuilder.textJDOMFileName.setText(selectedFileName);
                        FrontendGUI.tabProjecFolder.setEnabled(true);
                    }
                    break;
                default:
                    break;
                }

            }
        });

        Button buttonCancel = createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, true);
        buttonCancel.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
            }
        });
    }

    /**
     * Return the initial size of the dialog.
     */
    @Override
    protected Point getInitialSize() {
        return new Point(450, 300);
    }

    @Override
    protected void okPressed() {
        getInput();

        switch (actionName) {

        case OPEN_FILE: {
            if (!selectedFileName.isEmpty()) {
                if (pronetWorkspace.currentFileName().equals(selectedFileName)) {
                    ProjectAccessHandler.messageBox("File Management", "You Can't Open the Same File");
                } else {
                    super.okPressed();
                }
            } else {
                ProjectAccessHandler.messageBox("File Management", "No File Selected");
            }
            break;
        }
        case NEW_FILE: {
            break;
        }
        default:
            break;
        }
    }

    /**
     * Get the input from Text/Combo.
     */
    private void getInput() {

        switch (actionName) {
        case NEW_FILE:
            break;
        case OPEN_FILE: {
            selectedFileName = combo.getText();
            break;
        }
        }

    }

    /**
     * @param targetCombo
     */
    private void loadFilesList(Combo targetCombo) {
        DirectoryStream<Path> projectsList = pronetWorkspace.getFileList(pronetWorkspace.projectWorkspace());
        Path filePath = Paths.get(FrontendGUI.workSpaceAccess.projectWorkspace().toString());

        projectsList = pronetWorkspace.getFileList(filePath);

        for (Path path : projectsList)
            targetCombo.add(path.getFileName().toString());
    }
}