package org.geogebra.desktop.gui.view.data; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JPanel; import javax.swing.JPopupMenu; import javax.swing.JToolBar; import javax.swing.SwingConstants; import org.geogebra.common.gui.view.data.DataAnalysisModel; import org.geogebra.common.gui.view.data.DataVariable.GroupType; import org.geogebra.common.main.Localization; import org.geogebra.desktop.gui.inputfield.MyTextFieldD; import org.geogebra.desktop.gui.util.MyToggleButtonD; import org.geogebra.desktop.main.AppD; import org.geogebra.desktop.util.GuiResourcesD; /** * @author G. Sturr * */ public class DataAnalysisStyleBar extends JToolBar implements ActionListener { private static final long serialVersionUID = 1L; private AppD app; private DataAnalysisViewD daView; protected int iconHeight = 18; private JButton btnRounding, btnPrint; private MyToggleButtonD btnShowStatistics, btnShowPlot2, btnShowData; private MyToggleButtonD btnDataSource; private MyTextFieldD fldDataSource; private MyToggleButtonD btnExport; private MyToggleButtonD btnSwapXY; /** * @param app * @param statDialog */ public DataAnalysisStyleBar(AppD app, DataAnalysisViewD statDialog) { this.daView = statDialog; this.app = app; this.setFloatable(false); createGUI(); updateGUI(); setLabels(); } private void createGUI() { this.removeAll(); btnPrint = new JButton(app.getMenuIcon(GuiResourcesD.DOCUMENT_PRINT)); iconHeight = app.getScaledIconSize(); btnPrint.addActionListener(this); btnPrint.setFocusPainted(false); btnPrint.setBorderPainted(false); btnPrint.setContentAreaFilled(false); btnPrint.setFocusable(false); btnShowStatistics = new MyToggleButtonD( app.getScaledIcon( GuiResourcesD.STYLINGBAR_VARIABLE_ANALYSIS_STATISTICS), iconHeight); btnShowStatistics.addActionListener(this); btnShowStatistics.setFocusPainted(false); btnShowStatistics.setFocusable(false); btnShowData = new MyToggleButtonD( app.getScaledIcon( GuiResourcesD.STYLINGBAR_VARIABLE_ANALYSIS_DATA), iconHeight); btnShowData.addActionListener(this); btnShowData.setFocusPainted(false); btnShowData.setFocusable(false); btnShowPlot2 = new MyToggleButtonD( app.getScaledIcon( GuiResourcesD.STYLINGBAR_VARIABLE_ANALYSIS_2PLOT), iconHeight); btnShowPlot2.addActionListener(this); btnShowPlot2.setFocusPainted(false); btnShowPlot2.setFocusable(false); // create export button btnExport = new MyToggleButtonD( app.getScaledIcon(GuiResourcesD.EXPORT16), iconHeight); btnExport.setFocusPainted(false); btnExport.setFocusable(false); btnExport.addActionListener(this); btnSwapXY = new MyToggleButtonD(iconHeight); btnSwapXY.setSelected(!daView.getController().isLeftToRight()); btnSwapXY.addActionListener(this); btnSwapXY.setFocusable(false); buildRoundingButton(); createDataSourcePanel(); // add(btnRounding); add(btnDataSource); addSeparator(); add(btnShowStatistics); add(btnShowData); add(btnShowPlot2); add(btnSwapXY); // add(createDataSourcePanel()); } public void reinit() { createGUI(); } public void updateGUI() { DataAnalysisModel model = daView.getModel(); btnShowStatistics.setSelected(model.showStatPanel()); if (model.showStatPanel() && daView.getStatisticsPanel().isVisible()) { daView.getStatisticsPanel().updatePanel(); } switch (model.getMode()) { case DataAnalysisModel.MODE_ONEVAR: if (daView.getDataSource() != null && daView.groupType() == GroupType.RAWDATA) { btnShowData.setVisible(true); } else { btnShowData.setVisible(false); } break; case DataAnalysisModel.MODE_REGRESSION: btnShowData.setVisible(true); break; case DataAnalysisModel.MODE_MULTIVAR: btnShowData.setVisible(false); break; default: btnShowData.setVisible(false); } btnShowData.setSelected(model.showDataPanel()); btnShowPlot2.setVisible(!model.isMultiVar()); btnShowPlot2.setSelected(model.showDataDisplayPanel2()); // fldDataSource.setText(statDialog.getStatDialogController() // .getSourceString()); fldDataSource.revalidate(); btnSwapXY.setVisible(model.isRegressionMode()); btnSwapXY.setSelected(!daView.getController().isLeftToRight()); } private JPanel createDataSourcePanel() { btnDataSource = new MyToggleButtonD( app.getScaledIcon(GuiResourcesD.ARROW_CURSOR_GRABBING), iconHeight); btnDataSource.addActionListener(this); fldDataSource = new MyTextFieldD(app); JPanel dataSourcePanel = new JPanel(new BorderLayout(5, 0)); // dataSourcePanel.add(btnDataSource, app.borderWest()); // dataSourcePanel.add(fldDataSource, BorderLayout.CENTER); dataSourcePanel.setBorder(BorderFactory.createEmptyBorder(1, 5, 1, 5)); return dataSourcePanel; } /** * Builds popup button with options menu items */ private void buildRoundingButton() { btnRounding = new JButton( app.getScaledIcon(GuiResourcesD.TRIANGLE_DOWN)); btnRounding.setHorizontalTextPosition(SwingConstants.LEFT); btnRounding.setHorizontalAlignment(SwingConstants.LEFT); /* * roundingPopup = createRoundingPopup(); * * btnRounding.addActionListener(new ActionListener(){ public void * actionPerformed(ActionEvent e) { // popup appears below the button * roundingPopup.show(getParent(), * btnRounding.getLocation().x,btnRounding.getLocation().y + * btnRounding.getHeight()); } }); * * updateMenuDecimalPlaces(roundingPopup); */ } public void setLabels() { Localization loc = app.getLocalization(); btnRounding.setText(loc.getMenu(".xx")); btnShowStatistics.setToolTipText(loc.getMenu("ShowStatistics")); btnShowData.setToolTipText(loc.getMenu("ShowData")); btnShowPlot2.setToolTipText(loc.getMenu("ShowPlot2")); btnPrint.setToolTipText(loc.getMenu("Print")); btnDataSource.setToolTipText(loc.getMenu("ShowDataSource")); String swapString = loc.getMenu("Column.X") + " \u21C6 " + loc.getMenu("Column.Y"); btnSwapXY.setFont(app.getPlainFont()); btnSwapXY.setText(swapString); } @Override public void actionPerformed(ActionEvent e) { DataAnalysisModel model = daView.getModel(); Object source = e.getSource(); if (source == btnShowStatistics) { model.setShowStatistics(btnShowStatistics.isSelected()); updateGUI(); } else if (source == btnShowData) { model.setShowDataPanel(btnShowData.isSelected()); updateGUI(); } else if (source == btnShowPlot2) { model.setShowComboPanel2(btnShowPlot2.isSelected()); updateGUI(); } else if (source == btnSwapXY) { daView.getController().swapXY(); updateGUI(); } else if (source == btnDataSource) { btnDataSource.setSelected(false); model.setShowDataOptionsDialog(true); } else if (source == btnExport) { JPopupMenu menu = daView.getExportMenu(); menu.show(btnExport, 0, btnExport.getHeight()); btnExport.setSelected(false); } else if (source == btnPrint) { daView.doPrint(); } } }