Files
VisualSapfor/src/_VisualDVM/Visual/Windows/FunctionsForm.java

195 lines
8.2 KiB
Java

package _VisualDVM.Visual.Windows;
import Common.Visual.TextField.StyledTextField;
import Common.Visual.UI;
import _VisualDVM.Global;
import _VisualDVM.Passes.All.SPF_GetGraphFunctionPositions;
import _VisualDVM.Passes.PassCode;
import _VisualDVM.ProjectData.SapforData.Functions.UI.Graph.FunctionsGraphForm;
import _VisualDVM.ProjectData.SapforData.Functions.UI.Graph.FunctionsGraphUI;
import _VisualDVM.Visual.Interface.FunctionsWindow;
import javafx.util.Pair;
import javax.swing.*;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class FunctionsForm implements FunctionsWindow {
private JPanel content;
private JButton bFitToScreen;
private JButton bZoomIn;
private JButton bZoomOut;
private JButton bSaveGraphAsImage;
private JSpinner sIterations;
private JSpinner sResistance;
private JSpinner sScreen;
private JToolBar tools;
private JTextField filterName;
private JCheckBox ShowStandardFilter;
private JCheckBox ShowExternalFilter;
private JCheckBox ShowUnreachableFilter;
private JSpinner sDepth;
private JCheckBox ShowIn;
private JCheckBox ShowOut;
private JPanel functionsGraphPanel;
private JCheckBox cbShowByCurrentFunction;
private JLabel lCurrentFunction;
private JToolBar filtersBar;
private JLabel depthLabel;
private JButton bSaveCoordinates;
private JToolBar currentFunctionTools;
private FunctionsGraphForm functionsGraphForm;
public FunctionsForm() {
LoadSplitters();
bZoomIn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
functionsGraphForm.control.zoomIn();
}
});
bZoomOut.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
functionsGraphForm.control.zoomOut();
}
});
bSaveGraphAsImage.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Global.mainModule.getPass(PassCode.SaveGraph).Do();
}
});
sIterations.setModel(new SpinnerNumberModel(Global.mainModule.getProject().fgIterations,
100, 5000, 100
));
sResistance.setModel(new SpinnerNumberModel(Global.mainModule.getProject().fgResistance,
10, 5000, 50
));
sScreen.setModel(new SpinnerNumberModel(Global.mainModule.getProject().fgScreen,
0.25, 2.0, 0.05
));
sDepth.setModel(new SpinnerNumberModel(1,
0, 64, 1
));
UI.MakeSpinnerRapid(sIterations, e -> {
Global.mainModule.getProject().UpdatefgIterations((int) sIterations.getValue());
FunctionsGraphUI.ffTimer.restart();
});
UI.MakeSpinnerRapid(sResistance, e -> {
Global.mainModule.getProject().UpdatefgResistance((int) sResistance.getValue());
FunctionsGraphUI.ffTimer.restart();
});
UI.MakeSpinnerRapid(sScreen, e -> {
Global.mainModule.getProject().UpdatefgScreen((double) sScreen.getValue());
FunctionsGraphUI.ffTimer.restart();
});
UI.MakeSpinnerRapid(sDepth, e -> {
SPF_GetGraphFunctionPositions.depth = (int) sDepth.getValue();
FunctionsGraphUI.ffTimer.restart();
});
//----фильтрация функций
//<editor-fold desc="Фильтрация функций">
FunctionsGraphUI.ffTimer.setRepeats(false);
filterName.setText(SPF_GetGraphFunctionPositions.filterName);
filterName.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void insertUpdate(DocumentEvent e) {
SPF_GetGraphFunctionPositions.filterName = filterName.getText();
FunctionsGraphUI.ffTimer.restart();
}
@Override
public void removeUpdate(DocumentEvent e) {
SPF_GetGraphFunctionPositions.filterName = filterName.getText();
FunctionsGraphUI.ffTimer.restart();
}
@Override
public void changedUpdate(DocumentEvent e) {
}
});
ShowFunctionGraphSettings();
//-
ShowStandardFilter.addActionListener(e -> {
SPF_GetGraphFunctionPositions.showStandardFunctions = ShowStandardFilter.isSelected();
FunctionsGraphUI.ffTimer.stop();
Global.mainModule.getPass(PassCode.SPF_GetGraphFunctionPositions).Do();
});
ShowExternalFilter.addActionListener(e -> {
SPF_GetGraphFunctionPositions.showExternalFunctions = ShowExternalFilter.isSelected();
FunctionsGraphUI.ffTimer.stop();
Global.mainModule.getPass(PassCode.SPF_GetGraphFunctionPositions).Do();
});
ShowUnreachableFilter.addActionListener(e -> {
SPF_GetGraphFunctionPositions.showUnreachableFunctions = ShowUnreachableFilter.isSelected();
FunctionsGraphUI.ffTimer.stop();
Global.mainModule.getPass(PassCode.SPF_GetGraphFunctionPositions).Do();
});
cbShowByCurrentFunction.addActionListener(e -> {
SPF_GetGraphFunctionPositions.showByCurrentFunction = cbShowByCurrentFunction.isSelected();
FunctionsGraphUI.ffTimer.stop();
Global.mainModule.getPass(PassCode.SPF_GetGraphFunctionPositions).Do();
});
ShowIn.addActionListener(e -> {
SPF_GetGraphFunctionPositions.showIn = ShowIn.isSelected();
FunctionsGraphUI.ffTimer.stop();
Global.mainModule.getPass(PassCode.SPF_GetGraphFunctionPositions).Do();
});
ShowOut.addActionListener(e -> {
SPF_GetGraphFunctionPositions.showOut = ShowOut.isSelected();
FunctionsGraphUI.ffTimer.stop();
Global.mainModule.getPass(PassCode.SPF_GetGraphFunctionPositions).Do();
});
//---------------------------------------------------------
filtersBar.add(Global.mainModule.getPass(PassCode.SPF_GetGraphFunctionPositions).createButton(), 0);
filtersBar.add(Global.mainModule.getPass(PassCode.ApplyCurrentFunction).createButton(), 6);
filtersBar.setPreferredSize(new Dimension(0, 30));
}
@Override
public JPanel getContent() {
return content;
}
@Override
public Pair<Integer, Integer> getFunctionsGraphPanelSizes() {
return new Pair<>(functionsGraphPanel.getWidth(), functionsGraphPanel.getHeight());
}
@Override
public FunctionsGraphForm getFunctionsGraphWindow() {
return functionsGraphForm;
}
@Override
public void ShowFunctions() {
functionsGraphForm.Show();
}
@Override
public void ShowNoFunctions() {
functionsGraphForm.Clear();
}
@Override
public void ShowCurrentFunction() {
lCurrentFunction.setText(Global.mainModule.getFunction().funcName);
}
@Override
public void ShowNoCurrentFunction() {
lCurrentFunction.setText("?");
}
public void ShowFunctionGraphSettings() {
ShowStandardFilter.setSelected(SPF_GetGraphFunctionPositions.showStandardFunctions);
ShowExternalFilter.setSelected(SPF_GetGraphFunctionPositions.showExternalFunctions);
ShowUnreachableFilter.setSelected(SPF_GetGraphFunctionPositions.showUnreachableFunctions);
//-
sIterations.setValue(Global.mainModule.getProject().fgIterations);
sResistance.setValue(Global.mainModule.getProject().fgResistance);
sScreen.setValue(Global.mainModule.getProject().fgScreen);
//-
cbShowByCurrentFunction.setSelected(SPF_GetGraphFunctionPositions.showByCurrentFunction);
ShowIn.setSelected(SPF_GetGraphFunctionPositions.showIn);
ShowOut.setSelected(SPF_GetGraphFunctionPositions.showOut);
sDepth.setValue(SPF_GetGraphFunctionPositions.depth);
}
private void createUIComponents() {
// TODO: place custom component creation code here
functionsGraphPanel = (functionsGraphForm = new FunctionsGraphForm()).getContent();
filterName = new StyledTextField();
}
}