2024-10-09 22:15:56 +03:00
|
|
|
package _VisualDVM.Visual.Windows;
|
2024-10-07 00:58:29 +03:00
|
|
|
import Common.Database.Objects.DBObject;
|
2024-10-08 01:30:25 +03:00
|
|
|
import Common.Utils.CommonUtils;
|
2024-10-09 22:01:19 +03:00
|
|
|
import Common.Visual.Controls.MenuBarButton;
|
2024-10-08 01:30:25 +03:00
|
|
|
import GlobalData.GlobalDatabase;
|
2023-09-17 22:13:42 +03:00
|
|
|
import GlobalData.Settings.SettingName;
|
|
|
|
|
|
|
|
|
|
import javax.swing.*;
|
|
|
|
|
import java.util.Arrays;
|
|
|
|
|
import java.util.LinkedHashMap;
|
|
|
|
|
import java.util.Vector;
|
|
|
|
|
public abstract class TasksComparisonForm<T extends DBObject> extends ComparisonForm<T> {
|
|
|
|
|
public TasksComparisonForm(Class<T> t_in, ComparisonForm<T> slave_in) {
|
|
|
|
|
super(t_in, slave_in);
|
|
|
|
|
buttons = new LinkedHashMap<>();
|
|
|
|
|
int i = 3;
|
|
|
|
|
status = getFirstState();
|
|
|
|
|
Vector<TasksComparisonState> forbidden = new Vector(Arrays.asList(getForbiddenStates()));
|
|
|
|
|
for (TasksComparisonState state : TasksComparisonState.values()) {
|
|
|
|
|
if (!forbidden.contains(state)) {
|
|
|
|
|
MenuBarButton button = new MenuBarButton();
|
|
|
|
|
button.setIcon( "/icons/" + state.toString() + ".png");
|
|
|
|
|
button.setToolTipText(state.getDescription());
|
|
|
|
|
button.addActionListener(e -> {
|
|
|
|
|
ChangeState(state);
|
|
|
|
|
if (isMaster()) {
|
|
|
|
|
TasksComparisonForm slave_ = (TasksComparisonForm) slave;
|
|
|
|
|
slave_.ChangeState(state);
|
|
|
|
|
//в отличие от комбо боксов, тут события нажатия на кнопку, нет.
|
|
|
|
|
if (isReady()) {
|
|
|
|
|
if (slave.isReady()) {
|
2024-10-08 01:30:25 +03:00
|
|
|
if (((GlobalDatabase)CommonUtils.db).settings.get(SettingName.ComparsionDiffMergeOn).toBoolean()) {
|
2023-09-17 22:13:42 +03:00
|
|
|
DoComparePass(true);
|
|
|
|
|
} else
|
|
|
|
|
DoShowPass(true);
|
|
|
|
|
} else {
|
|
|
|
|
DoShowPass(true);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if (isReady()) {
|
|
|
|
|
if (master.isReady()) {
|
2024-10-08 01:30:25 +03:00
|
|
|
if (((GlobalDatabase)CommonUtils.db).settings.get(SettingName.ComparsionDiffMergeOn).toBoolean()) {
|
2023-09-17 22:13:42 +03:00
|
|
|
master.DoComparePass(true);
|
|
|
|
|
} else
|
|
|
|
|
master.DoShowPass(true);
|
|
|
|
|
} else {
|
|
|
|
|
master.DoShowPass(true); //!!!
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
tools.add(button, i);
|
|
|
|
|
buttons.put(state, button);
|
|
|
|
|
++i;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
protected TasksComparisonState status = TasksComparisonState.CompilationOutput;
|
|
|
|
|
protected LinkedHashMap<TasksComparisonState, JButton> buttons = null;
|
|
|
|
|
protected void DropTabsSelection() {
|
|
|
|
|
for (JButton button : buttons.values()){
|
|
|
|
|
button.setBorderPainted(false);
|
|
|
|
|
button.repaint();
|
|
|
|
|
button.revalidate();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
public void ChangeState(TasksComparisonState status_in) {
|
|
|
|
|
status = status_in;
|
|
|
|
|
DropTabsSelection();
|
|
|
|
|
ClearText();
|
|
|
|
|
JButton button = buttons.get(status_in);
|
|
|
|
|
button.setBorderPainted(false);
|
|
|
|
|
button.repaint();
|
|
|
|
|
button.revalidate();
|
|
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
protected void showObject() {
|
|
|
|
|
super.showObject();
|
|
|
|
|
buttons.get(status).doClick();
|
|
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
public void onClose() {
|
|
|
|
|
super.onClose();
|
|
|
|
|
if (isMaster())
|
|
|
|
|
DoShowPass(true);
|
|
|
|
|
else
|
|
|
|
|
master.DoShowPass(true);
|
|
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
protected String getText() {
|
|
|
|
|
return isReady()?getTextByTab():"объект не назначен";
|
|
|
|
|
}
|
|
|
|
|
//-----------перегружаемые
|
|
|
|
|
protected abstract String getTextByTab();
|
|
|
|
|
protected TasksComparisonState[] getForbiddenStates() {
|
|
|
|
|
return new TasksComparisonState[]{};
|
|
|
|
|
}
|
|
|
|
|
protected TasksComparisonState getFirstState() {
|
|
|
|
|
return TasksComparisonState.CompilationOutput;
|
|
|
|
|
}
|
|
|
|
|
}
|