/******************************************************************************
* *
* Copyright 2016 Subterranean Security *
* *
* Licensed under the Apache License, Version 2.0 (the "License"); *
* you may not use this file except in compliance with the License. *
* You may obtain a copy of the License at *
* *
* http://www.apache.org/licenses/LICENSE-2.0 *
* *
* Unless required by applicable law or agreed to in writing, software *
* distributed under the License is distributed on an "AS IS" BASIS, *
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
* See the License for the specific language governing permissions and *
* limitations under the License. *
* *
*****************************************************************************/
package com.subterranean_security.crimson.viewer.ui.screen.files;
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Dimension;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.JTextField;
import javax.swing.UIManager;
import com.subterranean_security.crimson.viewer.ui.UIUtil;
import com.subterranean_security.crimson.viewer.ui.common.components.ProgressBarFactory;
public class PathPanel extends JPanel {
private static final long serialVersionUID = 1L;
private JTextField textField;
private JPanel panel;
private JPanel panel_1;
private JLabel label;
private JLabel lblPath;
private JPanel panel_2;
private JProgressBar progressBar;
public PathPanel() {
setLayout(new BorderLayout(0, 0));
panel = new JPanel();
add(panel, BorderLayout.CENTER);
panel.setLayout(new CardLayout(0, 0));
panel_2 = new JPanel();
panel.add(panel_2, "VIEW");
panel_2.setLayout(new BorderLayout(0, 0));
lblPath = new JLabel("");
panel_2.add(lblPath);
progressBar = ProgressBarFactory.get();
progressBar.setPreferredSize(new Dimension(148, 4));
panel_2.add(progressBar, BorderLayout.SOUTH);
lblPath.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
openEdit();
}
});
panel_1 = new JPanel();
panel_1.setBackground(UIManager.getColor("TextField.background"));
panel.add(panel_1, "EDIT");
panel_1.setLayout(new BorderLayout(0, 0));
textField = new JTextField();
textField.addKeyListener(new KeyAdapter() {
@Override
public void keyReleased(KeyEvent arg0) {
if (arg0.getKeyCode() == KeyEvent.VK_ENTER) {
openView();
}
}
});
panel_1.add(textField, BorderLayout.CENTER);
textField.setColumns(10);
label = new JLabel();
label.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
openView();
}
});
label.setIcon(UIUtil.getIcon("icons16/general/folder_go.png"));
panel_1.add(label, BorderLayout.EAST);
}
private String path;
public void setPwd(String path) {
this.path = path;
textField.setText(path);
lblPath.setText(path);
}
public String getPwd() {
return path;
}
private boolean loading = false;
public void beginLoading() {
loading = true;
progressBar.setIndeterminate(true);
}
public void stopLoading() {
loading = false;
progressBar.setIndeterminate(false);
}
public void openEdit() {
if (!loading) {
((CardLayout) panel.getLayout()).show(panel, "EDIT");
textField.grabFocus();
textField.selectAll();
}
}
public void openView() {
((CardLayout) panel.getLayout()).show(panel, "VIEW");
}
}