package Visual_DVM_2021.UI.Main; import Common.Current; import Common.Global; import Common.UI.Editor.BaseEditor; import Common.UI.Editor.Viewer; import Common.UI.Menus_2023.VisualiserMenuBar; import Common.UI.TextField.StyledTextField; import Common.UI.UI; import Common.Utils.Utils; import GlobalData.Settings.SettingName; import Repository.BugReport.BugReport; import Repository.BugReport.BugReportInterface; import Repository.BugReport.BugReportState; import Visual_DVM_2021.Passes.PassCode_2021; import Visual_DVM_2021.Passes.Pass_2021; import Visual_DVM_2021.UI.Interface.CallbackWindow; import Visual_DVM_2021.UI.Interface.CommentInterface; import Visual_DVM_2021.UI.Interface.DescriptionInterface; import Visual_DVM_2021.UI.Interface.FormWithSplitters; import javax.swing.*; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; public class CallbackForm implements FormWithSplitters, CallbackWindow { private final JScrollPane bugCommentScroll; private final JScrollPane bugReportCommentAdditionScroll; private final BaseEditor BugReportComment; private final BaseEditor BugReportCommentAddition; //------------------------------------------- private final JScrollPane bugDescriptionScroll; private final JScrollPane bugReportDescriptionAdditionScroll; private final BaseEditor BugReportDescription; private final BaseEditor BugReportDescriptionAddition; private JPanel content; public JSplitPane SC10; public DescriptionInterface descriptionInterface; public CommentInterface commentInterface; DocumentListener descriptionAdditionListener = new DocumentListener() { @Override public void removeUpdate(DocumentEvent e) { } @Override public void insertUpdate(DocumentEvent e) { } @Override public void changedUpdate(DocumentEvent e) { if (!Current.getBugReport().state.equals(BugReportState.draft)) Current.getBugReport().descriptionAdditionDraft = BugReportDescriptionAddition.getText(); } }; DocumentListener commentAdditionListener = new DocumentListener() { @Override public void removeUpdate(DocumentEvent e) { } @Override public void insertUpdate(DocumentEvent e) { } @Override public void changedUpdate(DocumentEvent e) { if (!Current.getBugReport().state.equals(BugReportState.draft)) Current.getBugReport().commentAdditionDraft = BugReportCommentAddition.getText(); } }; DocumentListener descriptionListener = new DocumentListener() { @Override public void removeUpdate(DocumentEvent e) { } @Override public void insertUpdate(DocumentEvent e) { } @Override public void changedUpdate(DocumentEvent e) { if (Current.getBugReport().state.equals(BugReportState.draft)) Current.getBugReport().description = BugReportDescription.getText(); Global.componentsServer.db.bugReports.RefreshUI(); } }; DocumentListener commentListener = new DocumentListener() { @Override public void removeUpdate(DocumentEvent e) { } @Override public void insertUpdate(DocumentEvent e) { } @Override public void changedUpdate(DocumentEvent e) { if (Current.getBugReport().state.equals(BugReportState.draft)) Current.getBugReport().comment = BugReportComment.getText(); } }; //- private JToolBar accountTools; private JLabel lAccountName; private JLabel lAccountMail; private JLabel lAccountRole; private JPanel accountPanel; private JPanel bugReportsPanel; private JPanel filterFormPanel; private JPanel subscribersPanel; private JTabbedPane currentBugReportTabs; private JScrollPane bugSettingsScroll; private JCheckBox BugReportsMyOnlyFilter; private JCheckBox BugReportsOpenedOnly; private JToolBar bugsTools; private JToolBar settingsTools; private JToolBar descriptionTools; private JToolBar commentTools; private JToolBar descriptionAdditionTools; private JToolBar commentAdditionTools; private JPanel descriptionPanel; private JPanel commentPanel; private JSplitPane SCX; public JSplitPane SC6; private JTextField BugReportsKeyFilter; private JTextField BugReportsSenderNameFilter; private JTextField BugReportsDescriptionFilter; private JTextField BugReportsVersionFilter; private JTextField BugReportsExecutorFilter; private JTextField BugReportsCommentFilter; public JSplitPane SC67; private JPanel workspacesPanel; private JLabel adminLabel; private Viewer BugReportSettings; public void LockMyOnly() { if (!BugReportsMyOnlyFilter.isSelected()) { BugReportsMyOnlyFilter.doClick(); } BugReportsMyOnlyFilter.setEnabled(false); } public void UnlockMyOnly() { BugReportsMyOnlyFilter.setEnabled(true); if (BugReportsMyOnlyFilter.isSelected()) { BugReportsMyOnlyFilter.doClick(); } } public CallbackForm() { LoadSplitters(); //--------------------------------- //чтобы не было индусятины, лучше создать контролы здесь BugReportDescription = new BaseEditor(); BugReportDescription.setLineWrap(true); bugDescriptionScroll = new JScrollPane(BugReportDescription); //---------------------------------------------- BugReportDescriptionAddition = new BaseEditor(); BugReportDescriptionAddition.setLineWrap(true); bugReportDescriptionAdditionScroll = new JScrollPane(BugReportDescriptionAddition); BugReportDescription.setWrapStyleWord(true); BugReportDescriptionAddition.setWrapStyleWord(true); //--------------------------------------------- //- BugReportComment = new BaseEditor(); BugReportComment.setLineWrap(true); bugCommentScroll = new JScrollPane(BugReportComment); //- BugReportCommentAddition = new BaseEditor(); BugReportCommentAddition.setLineWrap(true); bugReportCommentAdditionScroll = new JScrollPane(BugReportCommentAddition); BugReportComment.setWrapStyleWord(true); BugReportCommentAddition.setWrapStyleWord(true); //---------------------------------------------- //тут развилка на то вкладки или поля. SwitchScreen(Global.db.settings.get(SettingName.SmallScreen).toBoolean()); //- Global.componentsServer.db.bugReports.mountUI(bugReportsPanel); Global.componentsServer.db.subscribers.mountUI(subscribersPanel); Global.componentsServer.db.workspaces.mountUI(workspacesPanel); settingsTools.add(Pass_2021.passes.get(PassCode_2021.ApplyBugReportSettings).createButton()); //- if (!Pass_2021.passes.get(PassCode_2021.CheckAccount).isDone()) { accountTools.add(Pass_2021.passes.get(PassCode_2021.CheckAccount).createButton()); } //-- BugReportsKeyFilter.getDocument().addDocumentListener(new DocumentListener() { @Override public void insertUpdate(DocumentEvent e) { BugReportInterface.filterKey = BugReportsKeyFilter.getText(); ShowBugReports(); } @Override public void removeUpdate(DocumentEvent e) { BugReportInterface.filterKey = BugReportsKeyFilter.getText(); ShowBugReports(); } @Override public void changedUpdate(DocumentEvent e) { } }); BugReportsSenderNameFilter.getDocument().addDocumentListener(new DocumentListener() { @Override public void insertUpdate(DocumentEvent e) { BugReportInterface.filterSenderName = BugReportsSenderNameFilter.getText(); ShowBugReports(); } @Override public void removeUpdate(DocumentEvent e) { BugReportInterface.filterSenderName = BugReportsSenderNameFilter.getText(); ShowBugReports(); } @Override public void changedUpdate(DocumentEvent e) { } }); BugReportsDescriptionFilter.getDocument().addDocumentListener(new DocumentListener() { @Override public void insertUpdate(DocumentEvent e) { BugReportInterface.filterDescription = BugReportsDescriptionFilter.getText(); ShowBugReports(); } @Override public void removeUpdate(DocumentEvent e) { BugReportInterface.filterDescription = BugReportsDescriptionFilter.getText(); ShowBugReports(); } @Override public void changedUpdate(DocumentEvent e) { } }); //------->>> BugReportsCommentFilter.getDocument().addDocumentListener(new DocumentListener() { @Override public void insertUpdate(DocumentEvent e) { BugReportInterface.filterComment = BugReportsCommentFilter.getText(); ShowBugReports(); } @Override public void removeUpdate(DocumentEvent e) { BugReportInterface.filterComment = BugReportsCommentFilter.getText(); ShowBugReports(); } @Override public void changedUpdate(DocumentEvent e) { } }); BugReportsExecutorFilter.getDocument().addDocumentListener(new DocumentListener() { @Override public void insertUpdate(DocumentEvent e) { BugReportInterface.filterExecutor = BugReportsExecutorFilter.getText(); ShowBugReports(); } @Override public void removeUpdate(DocumentEvent e) { BugReportInterface.filterExecutor = BugReportsExecutorFilter.getText(); ShowBugReports(); } @Override public void changedUpdate(DocumentEvent e) { } }); BugReportsVersionFilter.getDocument().addDocumentListener(new DocumentListener() { @Override public void insertUpdate(DocumentEvent e) { BugReportInterface.filterVersion = BugReportsVersionFilter.getText(); ShowBugReports(); } @Override public void removeUpdate(DocumentEvent e) { BugReportInterface.filterVersion = BugReportsVersionFilter.getText(); ShowBugReports(); } @Override public void changedUpdate(DocumentEvent e) { } }); //-------- BugReportsMyOnlyFilter.addActionListener(e -> { BugReportInterface.filterMyOnly = BugReportsMyOnlyFilter.isSelected(); ShowBugReports(); }); BugReportsOpenedOnly.addActionListener(e -> { BugReportInterface.filterOpenedOnly = BugReportsOpenedOnly.isSelected(); ShowBugReports(); }); //- accountTools.addSeparator(); accountTools.add(Pass_2021.passes.get(PassCode_2021.StartComponentsServer).createButton()); accountTools.add(Pass_2021.passes.get(PassCode_2021.ShutdownComponentsServer).createButton()); accountTools.add(Pass_2021.passes.get(PassCode_2021.PublishComponentsServer).createButton()); } //------------------------------------------- DescriptionTabs descriptionTabs = new DescriptionTabs(); DescriptionFields descriptionFields = new DescriptionFields(); CommentTabs commentTabs = new CommentTabs(); CommentFields commentFields = new CommentFields(); @Override public void SwitchScreen(boolean small) { UI.Clear(descriptionPanel); //------------------------------------------------------------------ descriptionInterface = small ? descriptionTabs : descriptionFields; descriptionInterface.setEditorScroll(bugDescriptionScroll); descriptionInterface.setAdditionScroll(bugReportDescriptionAdditionScroll); descriptionPanel.add(descriptionInterface.getContent()); //---------- descriptionPanel.revalidate(); descriptionPanel.repaint(); //--------- UI.Clear(commentPanel); //------------------------------------------------------------------ commentInterface = small ? commentTabs : commentFields; commentInterface.setEditorScroll(bugCommentScroll); commentInterface.setAdditionScroll(bugReportCommentAdditionScroll); commentPanel.add(commentInterface.getContent()); //---------- commentPanel.revalidate(); commentPanel.repaint(); } @Override public void SaveSplitters() { FormWithSplitters.super.SaveSplitters(); descriptionInterface.SaveSplitters(); commentInterface.SaveSplitters(); } @Override public String getBugReportDescriptionText() { return BugReportDescription.getText(); } @Override public String getBugReportDescriptionAdditionText() { return BugReportDescriptionAddition.getText(); } @Override public String getBugReportCommentText() { return BugReportComment.getText(); } @Override public String getBugReportCommentAdditionText() { return BugReportCommentAddition.getText(); } @Override public void ClearBugReportDescriptionAdditionText() { BugReportDescriptionAddition.setText(""); } @Override public void ClearBugReportCommentAdditionText() { BugReportCommentAddition.setText(""); } @Override public void FocusRecipients() { currentBugReportTabs.setSelectedIndex(2); } public void SwitchListeners(boolean on) { if (on) { BugReportDescriptionAddition.getDocument().addDocumentListener(descriptionAdditionListener); BugReportCommentAddition.getDocument().addDocumentListener(commentAdditionListener); BugReportDescription.getDocument().addDocumentListener(descriptionListener); BugReportComment.getDocument().addDocumentListener(commentListener); } else { BugReportDescriptionAddition.getDocument().removeDocumentListener(descriptionAdditionListener); BugReportCommentAddition.getDocument().removeDocumentListener(commentAdditionListener); BugReportDescription.getDocument().removeDocumentListener(descriptionListener); BugReportComment.getDocument().removeDocumentListener(commentListener); } } private void createUIComponents() { BugReportSettings = new Viewer(); bugSettingsScroll = new JScrollPane(BugReportSettings); //-- BugReportsKeyFilter = new StyledTextField(); BugReportsSenderNameFilter = new StyledTextField(); BugReportsDescriptionFilter = new StyledTextField(); BugReportsCommentFilter = new StyledTextField(); BugReportsExecutorFilter = new StyledTextField(); BugReportsVersionFilter = new StyledTextField(); settingsTools = new VisualiserMenuBar(); } public void EnableBugreports() { UI.Clear(accountPanel); accountPanel.add(SC10); UI.getMainWindow().SwitchTestingTabs(true); } @Override public void setUserRights() { LockMyOnly(); Pass_2021.passes.get(PassCode_2021.AddSubscriber).setControlsVisible(false); Pass_2021.passes.get(PassCode_2021.EditSubscriber).setControlsVisible(false); Pass_2021.passes.get(PassCode_2021.DeleteSubscriber).setControlsVisible(false); Pass_2021.passes.get(PassCode_2021.DownloadAllBugReportsArchives).setControlsVisible(false); Pass_2021.passes.get(PassCode_2021.DeleteSubscriberWorkspace).setControlsVisible(false); Pass_2021.passes.get(PassCode_2021.CompileServerSapfor).setControlsVisible(false); Pass_2021.passes.get(PassCode_2021.DeleteServerSapfor).setControlsVisible(false); // Pass_2021.passes.get(PassCode_2021.ShutdownComponentsServer).setControlsVisible(false); Pass_2021.passes.get(PassCode_2021.StartComponentsServer).setControlsVisible(false); Pass_2021.passes.get(PassCode_2021.PublishComponentsServer).setControlsVisible(false); // Pass_2021.passes.get(PassCode_2021.ShutdownTestingServer).setControlsVisible(false); Pass_2021.passes.get(PassCode_2021.StartTestingServer).setControlsVisible(false); Pass_2021.passes.get(PassCode_2021.PublishTestingServer).setControlsVisible(false); UI.testingBar.showServerAdminLabel(false); adminLabel.setVisible(false); } private void setDeveloperRights() { UnlockMyOnly(); Pass_2021.passes.get(PassCode_2021.AddSubscriber).setControlsVisible(false); Pass_2021.passes.get(PassCode_2021.EditSubscriber).setControlsVisible(false); Pass_2021.passes.get(PassCode_2021.DeleteSubscriber).setControlsVisible(false); Pass_2021.passes.get(PassCode_2021.DownloadAllBugReportsArchives).setControlsVisible(true); Pass_2021.passes.get(PassCode_2021.DeleteSubscriberWorkspace).setControlsVisible(false); Pass_2021.passes.get(PassCode_2021.CompileServerSapfor).setControlsVisible(false); Pass_2021.passes.get(PassCode_2021.DeleteServerSapfor).setControlsVisible(false); // Pass_2021.passes.get(PassCode_2021.ShutdownComponentsServer).setControlsVisible(false); Pass_2021.passes.get(PassCode_2021.StartComponentsServer).setControlsVisible(false); Pass_2021.passes.get(PassCode_2021.PublishComponentsServer).setControlsVisible(false); // Pass_2021.passes.get(PassCode_2021.ShutdownTestingServer).setControlsVisible(false); Pass_2021.passes.get(PassCode_2021.StartTestingServer).setControlsVisible(false); Pass_2021.passes.get(PassCode_2021.PublishTestingServer).setControlsVisible(false); UI.testingBar.showServerAdminLabel(false); adminLabel.setVisible(false); } @Override public void setAdminRights() { UnlockMyOnly(); Pass_2021.passes.get(PassCode_2021.AddSubscriber).setControlsVisible(true); Pass_2021.passes.get(PassCode_2021.EditSubscriber).setControlsVisible(true); Pass_2021.passes.get(PassCode_2021.DeleteSubscriber).setControlsVisible(true); Pass_2021.passes.get(PassCode_2021.DownloadAllBugReportsArchives).setControlsVisible(true); Pass_2021.passes.get(PassCode_2021.DeleteSubscriberWorkspace).setControlsVisible(true); Pass_2021.passes.get(PassCode_2021.CompileServerSapfor).setControlsVisible(true); Pass_2021.passes.get(PassCode_2021.DeleteServerSapfor).setControlsVisible(true); // Pass_2021.passes.get(PassCode_2021.ShutdownComponentsServer).setControlsVisible(true); Pass_2021.passes.get(PassCode_2021.StartComponentsServer).setControlsVisible(true); Pass_2021.passes.get(PassCode_2021.PublishComponentsServer).setControlsVisible(true); //-- Pass_2021.passes.get(PassCode_2021.ShutdownTestingServer).setControlsVisible(true); Pass_2021.passes.get(PassCode_2021.StartTestingServer).setControlsVisible(true); Pass_2021.passes.get(PassCode_2021.PublishTestingServer).setControlsVisible(true); //-- UI.testingBar.showServerAdminLabel(true); adminLabel.setVisible(true); } @Override public void ShowAccount() { lAccountName.setText(Utils.Brackets(Current.getAccount().name)); lAccountMail.setText(Utils.Brackets(Current.getAccount().email)); lAccountRole.setText(Utils.Brackets(Current.getAccount().role.getDescription())); switch (Current.getAccount().role) { case Undefined: /// UI.Clear(accountPanel); // accountPanel.add(new CallbackWelcomeForm().content); // UI.getMainWindow().SwitchTestingTabs(false); // break; case User: //видит только свои баги. // EnableBugreports(); // setUserRights(); // break; case Developer: EnableBugreports(); setDeveloperRights(); break; case Admin: EnableBugreports(); setAdminRights(); break; default: EnableBugreports(); break; } } @Override public void ShowBugReports() { Global.componentsServer.db.bugReports.ShowUI(); } @Override public void ShowNoBugReports() { Global.componentsServer.db.bugReports.ClearUI(); } @Override public void ShowSubscribers() { Global.componentsServer.db.subscribers.ShowUI(); } @Override public void ShowNoSubscribers() { Global.componentsServer.db.subscribers.ClearUI(); } private void ShowDraft() { Pass_2021.setPassesControlsVisible(true, PassCode_2021.PublishBugReport, PassCode_2021.SaveBugReportRecipients, PassCode_2021.SaveBugReportExecutor, PassCode_2021.DeleteBugReport ); Pass_2021.setPassesControlsVisible(false, PassCode_2021.AppendBugReportDescription, PassCode_2021.AppendBugReportComment, PassCode_2021.SaveBugReportDescription, PassCode_2021.SaveBugReportComment, PassCode_2021.OpenBugReport, PassCode_2021.CloseBugReport, PassCode_2021.OpenBugReportTestProject, PassCode_2021.UpdateBugReportProgress ); } private void ShowUserExecutor() { Pass_2021.setPassesControlsVisible(true, PassCode_2021.AppendBugReportComment, PassCode_2021.UpdateBugReportProgress, PassCode_2021.OpenBugReportTestProject ); Pass_2021.setPassesControlsVisible(false, PassCode_2021.PublishBugReport, PassCode_2021.SaveBugReportRecipients, PassCode_2021.SaveBugReportExecutor, PassCode_2021.SaveBugReportDescription, PassCode_2021.SaveBugReportComment, PassCode_2021.AppendBugReportDescription, PassCode_2021.OpenBugReport, PassCode_2021.CloseBugReport, PassCode_2021.DeleteBugReport ); } private void ShowSender() { Pass_2021.setPassesControlsVisible(true, PassCode_2021.AppendBugReportComment, PassCode_2021.UpdateBugReportProgress, PassCode_2021.OpenBugReportTestProject, PassCode_2021.SaveBugReportRecipients, PassCode_2021.SaveBugReportExecutor, PassCode_2021.SaveBugReportDescription, PassCode_2021.SaveBugReportComment, PassCode_2021.AppendBugReportDescription, PassCode_2021.OpenBugReport, PassCode_2021.CloseBugReport, PassCode_2021.DeleteBugReport ); Pass_2021.setPassesControlsVisible(false, PassCode_2021.PublishBugReport ); } private void ShowUser() { Pass_2021.setPassesControlsVisible(false, PassCode_2021.PublishBugReport, PassCode_2021.SaveBugReportRecipients, PassCode_2021.SaveBugReportExecutor, PassCode_2021.SaveBugReportDescription, PassCode_2021.SaveBugReportComment, PassCode_2021.AppendBugReportDescription, PassCode_2021.OpenBugReport, PassCode_2021.CloseBugReport, PassCode_2021.DeleteBugReport, PassCode_2021.AppendBugReportComment, PassCode_2021.UpdateBugReportProgress, PassCode_2021.OpenBugReportTestProject ); } @Override public void ShowCurrentBugReport() { SwitchListeners(false); // currentBugReportTabs.setSelectedIndex(0); BugReport target = Current.getBugReport(); BugReportInterface.CheckSubscribers(target); Global.componentsServer.db.subscribers.ShowUI(); //- BugReportDescription.setText(target.description); BugReportDescription.ShowBegin(); BugReportDescriptionAddition.setText(target.descriptionAdditionDraft); //- BugReportComment.setText(target.comment); BugReportComment.ShowBegin(); BugReportCommentAddition.setText(target.commentAdditionDraft); BugReportSettings.setText( String.join("\n", ("Версия SAPFOR: " + target.sapfor_version), ("Версия визуализатора: " + target.visualiser_version), target.sapfor_settings ) ); Pass_2021.setPassesControlsVisible(true, PassCode_2021.ApplyBugReportSettings); // if (target.state.equals(BugReportState.draft)) { ShowDraft(); } else { switch (Current.getAccount().role) { case User: if (Current.getAccount().email.equalsIgnoreCase(target.sender_address)) { ShowSender(); //отправитель.может делать с багом все. } else { if (Current.getAccount().email.equalsIgnoreCase(target.executor_address)) { ShowUserExecutor(); //исполнитель. может менять прогресс и дополнять комментарий. } else ShowUser(); //недоступно ничего. и баг ему невидим. но на всякий случай. } break; case Developer: case Admin: //разработчик может все то же что и админ. они равны по правам владельцу любого бага. ShowSender(); break; } } SwitchListeners(true); } @Override public void ShowNoCurrentBugReport() { SwitchListeners(false); Global.componentsServer.db.subscribers.ShowUI(); //- BugReportDescription.setText(""); BugReportComment.setText(""); BugReportDescriptionAddition.setText(""); BugReportCommentAddition.setText(""); BugReportSettings.setText(""); //- Pass_2021.setPassesControlsVisible(false, PassCode_2021.SaveBugReportExecutor, PassCode_2021.SaveBugReportRecipients, PassCode_2021.AppendBugReportDescription, PassCode_2021.SaveBugReportDescription, PassCode_2021.SaveBugReportComment, PassCode_2021.AppendBugReportComment, PassCode_2021.ApplyBugReportSettings, PassCode_2021.PublishBugReport, PassCode_2021.OpenBugReport, PassCode_2021.CloseBugReport, PassCode_2021.OpenBugReportTestProject, PassCode_2021.UpdateBugReportProgress, PassCode_2021.DeleteBugReport ); } @Override public void ShowSubscription() { } @Override public JPanel getContent() { return content; } }