package org.geogebra.desktop.gui.view.data;
import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowFocusListener;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import org.geogebra.common.main.App;
import org.geogebra.common.main.Localization;
import org.geogebra.desktop.gui.GuiManagerD;
import org.geogebra.desktop.gui.util.LayoutUtil;
import org.geogebra.desktop.main.AppD;
/**
* Dialog to manage data sources for the DataAnalysisView
*
* @author G. Sturr
*
*/
public class DataSourceDialog extends JDialog
implements ActionListener, WindowFocusListener {
private static final long serialVersionUID = 1L;
private AppD app;
private int mode;
private DataSourcePanel dataSourcePanel;
private JButton btnCancel, btnOK;
private JLabel lblTitle;
/*******************************************
* Constructs the dialog
*
* @param app
* @param mode
*/
public DataSourceDialog(AppD app, int mode) {
// non-modal dialog
super(app.getFrame(), app.getLocalization().getMenu(""), false);
this.app = app;
this.mode = mode;
addWindowFocusListener(this);
createGUI();
this.setResizable(true);
pack();
setLocation();
}
private void createGUI() {
dataSourcePanel = new DataSourcePanel(app, mode);
lblTitle = new JLabel();
lblTitle.setIconTextGap(10);
btnOK = new JButton();
btnOK.addActionListener(this);
btnCancel = new JButton();
btnCancel.addActionListener(this);
JPanel titlePanel = LayoutUtil.flowPanel(lblTitle);
// titlePanel.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
JPanel mainPanel = new JPanel(new BorderLayout());
mainPanel.add(titlePanel, BorderLayout.NORTH);
mainPanel.add(dataSourcePanel, BorderLayout.CENTER);
mainPanel.add(LayoutUtil.flowPanelRight(5, 0, 0, btnCancel, btnOK),
BorderLayout.SOUTH);
mainPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
getContentPane().setLayout(new BorderLayout());
getContentPane().add(mainPanel, BorderLayout.CENTER);
setLabels();
}
@Override
public void setVisible(boolean isVisible) {
super.setVisible(isVisible);
}
@Override
public void windowGainedFocus(WindowEvent e) {
// ignored
}
@Override
public void windowLostFocus(WindowEvent e) {
// this.setVisible(false);
}
@Override
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
if (source == btnOK) {
dataSourcePanel.applySettings();
app.getGuiManager().setShowView(true, App.VIEW_DATA_ANALYSIS);
app.setMoveMode();
setVisible(false);
} else if (source == btnCancel) {
app.setMoveMode();
setVisible(false);
}
}
public void updateFonts(Font font) {
setFont(font);
dataSourcePanel.updateFonts(font);
GuiManagerD.setFontRecursive(this, font);
}
public void setLabels() {
Localization loc = app.getLocalization();
setTitle(loc.getMenu("DataSource"));
lblTitle.setText(app.getToolName(mode));
lblTitle.setIcon(app.getModeIcon(mode));
btnCancel.setText(loc.getMenu("Cancel"));
btnOK.setText(loc.getMenu("Analyze"));
dataSourcePanel.setLabels();
}
public void updateDialog(int mode, boolean doAutoLoadSelectedGeos) {
this.mode = mode;
dataSourcePanel.updatePanel(mode, doAutoLoadSelectedGeos);
setLabels();
// setLocation();
pack();
}
private void setLocation() {
if (app.getGuiManager().showView(App.VIEW_DATA_ANALYSIS)) {
setLocationRelativeTo(((DataAnalysisViewD) app.getGuiManager()
.getDataAnalysisView()).getDataAnalysisViewComponent());
} else {
setLocationRelativeTo(app.getMainComponent());
}
}
}