Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,8 @@ public class CheckmarxView extends ViewPart implements EventHandler {
private String latestScanId = PluginConstants.EMPTY_STRING;
private static String currentScanIdFormmated = PluginConstants.EMPTY_STRING;
private List<String> currentBranches = new ArrayList<>();
private List<Project> currentProjects = new ArrayList<>();


private boolean scansCleanedByProject = false;
private boolean firstTimeTriggered = false;
Expand Down Expand Up @@ -375,10 +377,10 @@ private void loadComboboxes() {

@Override
protected IStatus run(IProgressMonitor arg0) {
List<Project> projectList = getProjects();
currentProjects = getProjects();
sync.asyncExec(() -> {
projectComboViewer.setInput(projectList);
if (currentProjectId.isEmpty() || projectList.isEmpty()) {
projectComboViewer.setInput(currentProjects);
if (currentProjectId.isEmpty() || currentProjects.isEmpty()) {
PluginUtils.setTextForComboViewer(projectComboViewer, PROJECT_COMBO_VIEWER_TEXT);
PluginUtils.setTextForComboViewer(branchComboViewer, BRANCH_COMBO_VIEWER_TEXT);
PluginUtils.setTextForComboViewer(scanIdComboViewer, PluginConstants.COMBOBOX_SCAND_ID_PLACEHOLDER);
Expand All @@ -389,7 +391,7 @@ protected IStatus run(IProgressMonitor arg0) {
});

// set project ID
String currentProjectName = getProjectFromId(projectList, currentProjectId);
String currentProjectName = getProjectFromId(currentProjects, currentProjectId);
sync.asyncExec(() -> {
PluginUtils.setTextForComboViewer(projectComboViewer, currentProjectName);
});
Expand Down Expand Up @@ -760,20 +762,25 @@ public void selectionChanged(SelectionChangedEvent event) {
IStructuredSelection selection = (IStructuredSelection) event.getSelection();

if (selection.size() > 0) {

Project selectedProject = ((Project) selection.getFirstElement());

// Check if selected project exists in currentProjects
if (!currentProjects.contains(selectedProject)) {
// Invalid project - reset to default text and disable scan button
PluginUtils.setTextForComboViewer(projectComboViewer, PROJECT_COMBO_VIEWER_TEXT);
updateStartScanButton(false);
return;
}

// Avoid non-sense trigger changed when opening the combo
if (selectedProject.getId().equals(currentProjectId)) {
CxLogger.info(PluginConstants.INFO_CHANGE_PROJECT_EVENT_NOT_TRIGGERED);

return;
}

onProjectChangePluginLoading(selectedProject.getId());

Job job = new Job("Checkmarx: Loading branches...") {

@Override
protected IStatus run(IProgressMonitor arg0) {
currentBranches = DataProvider.getInstance().getBranchesForProject(selectedProject.getId());
Expand All @@ -790,15 +797,29 @@ protected IStatus run(IProgressMonitor arg0) {
});
return Status.OK_STATUS;
}

};
job.schedule();

}
}
});
}

// Add ModifyListener to handle manual text input for projects
projectComboViewer.getCombo().addModifyListener(e -> {
String enteredProject = projectComboViewer.getCombo().getText();

// Check if text was modified and project doesn't exist
boolean projectExists = currentProjects.stream()
.anyMatch(p -> p.getName().equals(enteredProject));

if (!projectExists) {
updateStartScanButton(false); // Disable scan button
} else {
// Only enable if we also have a valid branch
boolean validBranch = !currentBranch.isEmpty() && currentBranches.contains(currentBranch);
updateStartScanButton(validBranch);
}
});
}
/**
* Update state variables and make plugin fields loading when project changes
*
Expand Down Expand Up @@ -869,38 +890,57 @@ public void selectionChanged(SelectionChangedEvent event) {
if (selection.size() > 0) {
String selectedBranch = ((String) selection.getFirstElement());

// Check if selected branch exists in currentBranches
if (!currentBranches.contains(selectedBranch)) {
// Invalid branch - reset to default text and disable scan button
PluginUtils.setTextForComboViewer(branchComboViewer, BRANCH_COMBO_VIEWER_TEXT);
updateStartScanButton(false);
return;
}

// Avoid non-sense trigger changed when opening the combo
if (selectedBranch.equals(currentBranch) && !scansCleanedByProject) {
CxLogger.info(PluginConstants.INFO_CHANGE_BRANCH_EVENT_NOT_TRIGGERED);

return;
}

onBranchChangePluginLoading(selectedBranch);

List<Scan> scanList = DataProvider.getInstance().getScansForProject(selectedBranch);
if(!scanList.isEmpty()) {
if (!scanList.isEmpty()) {
latestScanId = getLatestScanFromScanList(scanList).getId();
}
scanIdComboViewer.setInput(scanList);
scanIdComboViewer.setInput(scanList);
loadLatestScanByDefault(scanList);

sync.asyncExec(new Runnable() {
public void run() {
PluginUtils.enableComboViewer(projectComboViewer, true);
PluginUtils.enableComboViewer(scanIdComboViewer, true);
PluginUtils.updateFiltersEnabledAndCheckedState(toolBarActions.getFilterActions());
toolBarActions.getStateFilterAction().setEnabled(true);
updateStartScanButton(true);
}
}
});

PluginUtils.updateFiltersEnabledAndCheckedState(toolBarActions.getFilterActions());
}
}
});

// Add ModifyListener to handle manual text input
branchComboViewer.getCombo().addModifyListener(e -> {
String enteredBranch = branchComboViewer.getCombo().getText();

// If text was modified and branch doesn't exist
if (!currentBranches.contains(enteredBranch)) {
updateStartScanButton(false); // Disable scan button
} else {
updateStartScanButton(true); // Enable scan button if branch is valid
}
});
}

private void loadLatestScanByDefault(List<Scan> scanList) {
if(scanList.isEmpty()) {
PluginUtils.setTextForComboViewer(scanIdComboViewer, PluginConstants.COMBOBOX_SCAND_ID_NO_SCANS_AVAILABLE);
Expand Down
Loading