All Downloads are FREE. Search and download functionalities are using the official Maven repository.

fr.vergne.translation.editor.ProjectLoaderPanel Maven / Gradle / Ivy

package fr.vergne.translation.editor;

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.io.File;
import java.util.Collection;
import java.util.HashSet;

import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JPanel;
import javax.swing.JTextField;

import fr.vergne.translation.TranslationProject;
import fr.vergne.translation.util.ProjectLoader;

@SuppressWarnings("serial")
public class ProjectLoaderPanel>
		extends JPanel {

	private final JTextField folderPathField = new JTextField();
	private final Collection> listeners = new HashSet<>();
	private final ProjectLoader projectLoader;

	public ProjectLoaderPanel(ProjectLoader projectLoader) {
		this.projectLoader = projectLoader;

		folderPathField.setEditable(false);
		folderPathField.setText("Map folder...");

		JButton openButton = new JButton(new AbstractAction("Browse") {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				String path = folderPathField.getText();
				JFileChooser fileChooser = new JFileChooser(new File(path
						.isEmpty() ? "." : path));
				fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
				fileChooser.setFileHidingEnabled(true);
				fileChooser.setMultiSelectionEnabled(false);
				int answer = fileChooser.showDialog(ProjectLoaderPanel.this,
						"Open");
				if (answer == JFileChooser.APPROVE_OPTION) {
					setProjectPath(fileChooser.getSelectedFile());
				} else {
					// do not consider it
				}
			}
		});
		openButton
				.setToolTipText("Select the folder of the translation project.");

		setLayout(new GridBagLayout());
		GridBagConstraints constraints = new GridBagConstraints();
		constraints.gridx = 1;
		add(openButton, constraints);
		constraints.gridx = 0;
		constraints.fill = GridBagConstraints.HORIZONTAL;
		constraints.weightx = 1;
		add(folderPathField, constraints);
	}

	public void setProjectPath(File directory) {
		TProject currentProject = projectLoader.load(directory);
		folderPathField.setText(directory.toString());
		for (ProjectLoadedListener listener : listeners) {
			listener.projectLoaded(directory, currentProject);
		}
	}

	public void addProjectLoadedListener(
			ProjectLoadedListener listener) {
		listeners.add(listener);
	}

	public void removeProjectLoadedListener(
			ProjectLoadedListener listener) {
		listeners.remove(listener);
	}

	public static interface ProjectLoadedListener> {
		public void projectLoaded(File directory, TProject project);
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy