tuleap #823 Column width on the details page.
Change-Id: Ic370339b3e181f2baff664050e6a724b82ebe8ce
Signed-off-by: Jacques Bouthillier <lmcbout@gmail.com>
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/UIConflictsWithTable.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/UIConflictsWithTable.java
index cc3da80..af42537 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/UIConflictsWithTable.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/UIConflictsWithTable.java
@@ -38,20 +38,23 @@
// ------------------------------------------------------------------------
private TableViewer fViewer;
+ private Composite fParent;
+
// ------------------------------------------------------------------------
// Constructors
// ------------------------------------------------------------------------
- public UIConflictsWithTable() {
+ public UIConflictsWithTable(Composite aParent) {
+ fParent = aParent;
}
// ------------------------------------------------------------------------
// Methods
// ------------------------------------------------------------------------
- public TableViewer createTableViewerSection(Composite aParent) {
+ public TableViewer createTableViewerSection() {
// Create the table viewer
- fViewer = new TableViewer(aParent, TABLE_STYLE);
+ fViewer = new TableViewer(fParent, TABLE_STYLE);
fViewer = buildAndLayoutTable(fViewer);
// Set the content sorter
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/UIRelatedChangesTable.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/UIRelatedChangesTable.java
index 8969d64..ff6baf6 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/UIRelatedChangesTable.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/UIRelatedChangesTable.java
@@ -37,21 +37,23 @@
// ------------------------------------------------------------------------
private TableViewer fViewer;
+ private Composite fParent;
+
// ------------------------------------------------------------------------
// Constructors
// ------------------------------------------------------------------------
- public UIRelatedChangesTable() {
-
+ public UIRelatedChangesTable(Composite aParent) {
+ fParent = aParent;
}
// ------------------------------------------------------------------------
// Methods
// ------------------------------------------------------------------------
- public TableViewer createTableViewerSection(Composite aParent) {
+ public TableViewer createTableViewerSection() {
// Create the table viewer to maintain the list of reviews
- fViewer = new TableViewer(aParent, TABLE_STYLE);
+ fViewer = new TableViewer(fParent, TABLE_STYLE);
fViewer = buildAndLayoutTable(fViewer);
return fViewer;
@@ -104,7 +106,7 @@
/**
* return the table viewer
- *
+ *
* @return
*/
public TableViewer getViewer() {
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/UISameTopicTable.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/UISameTopicTable.java
index 6658c7c..bf5aa7e 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/UISameTopicTable.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/UISameTopicTable.java
@@ -38,21 +38,23 @@
// ------------------------------------------------------------------------
private TableViewer fViewer;
+ private Composite fParent;
+
// ------------------------------------------------------------------------
// Constructors
// ------------------------------------------------------------------------
- public UISameTopicTable() {
-
+ public UISameTopicTable(Composite aParent) {
+ fParent = aParent;
}
// ------------------------------------------------------------------------
// Methods
// ------------------------------------------------------------------------
- public TableViewer createTableViewerSection(Composite aParent) {
+ public TableViewer createTableViewerSection() {
// Create the table viewer to maintain the list of reviews
- fViewer = new TableViewer(aParent, TABLE_STYLE);
+ fViewer = new TableViewer(fParent, TABLE_STYLE);
fViewer = buildAndLayoutTable(fViewer);
// Set the content sorter
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/tabs/DetailsTabView.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/tabs/DetailsTabView.java
index c3338cf..41690a7 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/tabs/DetailsTabView.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/tabs/DetailsTabView.java
@@ -95,7 +95,7 @@
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.ViewerCell;
import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.ScrolledComposite;
+import org.eclipse.swt.custom.SashForm;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.events.KeyListener;
import org.eclipse.swt.events.MouseAdapter;
@@ -104,7 +104,6 @@
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
@@ -116,7 +115,6 @@
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Link;
-import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.TabFolder;
import org.eclipse.swt.widgets.TabItem;
import org.eclipse.swt.widgets.Text;
@@ -135,8 +133,6 @@
private static final String TITLE = Messages.SummaryTabView_0;
- private static Color RED;
-
private final SimpleDateFormat formatTimeOut = new SimpleDateFormat("MMM d, yyyy hh:mm a"); //$NON-NLS-1$
private Link genProjectData;
@@ -243,69 +239,55 @@
private void createContols(final TabFolder tabFolder) {
final int heightFirstRow = UIUtils.computeFontSize(tabFolder).y * 8;
final int heightLists = 150;
- final int scrollAreaHeight = heightFirstRow + (heightLists * 2);
-
- RED = tabFolder.getDisplay().getSystemColor(SWT.COLOR_RED);
TabItem tabSummary = new TabItem(tabFolder, SWT.NONE);
tabSummary.setText(Messages.SummaryTabView_1);
- final ScrolledComposite scrolledComposite = new ScrolledComposite(tabFolder, SWT.V_SCROLL);
- scrolledComposite.setExpandHorizontal(false);
- scrolledComposite.setExpandVertical(true);
- scrolledComposite.setMinHeight(scrollAreaHeight);
- scrolledComposite.setLayout(new FillLayout());
- tabSummary.setControl(scrolledComposite);
+ SashForm sashFormGlobal = new SashForm(tabFolder, SWT.VERTICAL);
+ tabSummary.setControl(sashFormGlobal);
- Composite composite = new Composite(scrolledComposite, SWT.NONE);
- composite.setLayout(new GridLayout(6, false));
+ SashForm sashFormHorizonTop = new SashForm(sashFormGlobal, SWT.HORIZONTAL);
- Composite general = summaryGeneral(composite);
- GridData generalGridData = new GridData(SWT.FILL, SWT.FILL, true, false, 2, 1);
- generalGridData.heightHint = heightFirstRow;
+ Composite general = summaryGeneral(sashFormHorizonTop);
+ GridData generalGridData = new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1);
+ generalGridData.minimumHeight = heightFirstRow * 4;
general.setLayoutData(generalGridData);
- Composite reviewers = summaryReviewers(composite);
+ Composite reviewers = summaryReviewers(sashFormHorizonTop);
GridData reviewersGridData = new GridData(SWT.FILL, SWT.FILL, true, true, 4, 1);
- reviewersGridData.heightHint = heightFirstRow;
+ reviewersGridData.minimumHeight = heightFirstRow * 7;
+ reviewersGridData.heightHint = heightFirstRow * 7;
reviewers.setLayoutData(reviewersGridData);
- Composite includedIn = summaryIncluded(composite);
+ //Set the % of display data.40% table and 60% for the reviewers
+ sashFormHorizonTop.setWeights(new int[] { 40, 60 });
+
+ SashForm sashFormHorizonMiddle = new SashForm(sashFormGlobal, SWT.HORIZONTAL);
+ GridData sashMiddleGridData = new GridData(SWT.FILL, SWT.FILL, true, true, 6, 1);
+ sashMiddleGridData.minimumHeight = heightFirstRow * 6;
+ sashFormHorizonMiddle.setLayoutData(sashMiddleGridData);
+
+ Composite includedIn = summaryIncluded(sashFormHorizonMiddle);
includedIn.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false, 3, 1));
- Composite sameTopic = summarySameTopic(composite);
- GridData sameTopicGridData = new GridData(SWT.FILL, SWT.FILL, true, true, 3, 2);
+ Composite sameTopic = summarySameTopic(sashFormHorizonMiddle);
+ GridData sameTopicGridData = new GridData(SWT.FILL, SWT.FILL, true, true, 3, 1);
sameTopicGridData.heightHint = heightLists;
sameTopic.setLayoutData(sameTopicGridData);
- Composite relatedChanges = summaryRelatedChanges(composite);
- relatedChanges.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 3, 2));
+ SashForm sashFormHorizonBottom = new SashForm(sashFormGlobal, SWT.HORIZONTAL);
- Composite conflicts = summaryConflicts(composite);
+ Composite relatedChanges = summaryRelatedChanges(sashFormHorizonBottom);
+ relatedChanges.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 3, 1));
+
+ Composite conflicts = summaryConflicts(sashFormHorizonBottom);
GridData conflictsGridData = new GridData(SWT.FILL, SWT.FILL, true, true, 3, 1);
conflictsGridData.heightHint = heightLists;
conflicts.setLayoutData(conflictsGridData);
- scrolledComposite.setContent(composite);
- Listener l = event -> {
- Point size = scrolledComposite.getSize();
- Point cUnrestrainedSize = composite.computeSize(SWT.DEFAULT, SWT.DEFAULT);
- if (size.y >= cUnrestrainedSize.y && size.x >= cUnrestrainedSize.x) {
- composite.setSize(size);
- return;
- }
- // does not fit
- Rectangle hostRect = scrolledComposite.getBounds();
- int border = scrolledComposite.getBorderWidth();
- if (scrolledComposite.getVerticalBar().isVisible() || size.y <= scrollAreaHeight) {
- hostRect.width -= 2 * border;
- hostRect.width -= scrolledComposite.getVerticalBar().getSize().x;
- }
- hostRect.height -= 2 * border;
- composite.setSize(Math.max(cUnrestrainedSize.x, hostRect.width),
- Math.max(cUnrestrainedSize.y, hostRect.height));
- };
- scrolledComposite.addListener(SWT.Resize, l);
+ //Set the % of display top.40% middle and bottom 30%
+ sashFormGlobal.setWeights(new int[] { 40, 30, 30 });
+
}
private Composite summaryGeneral(Composite parent) {
@@ -374,10 +356,12 @@
GridData gdGenStrategyData = new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1);
genStrategyData.setLayoutData(gdGenStrategyData);
+ Color red = parent.getDisplay().getSystemColor(SWT.COLOR_RED);
+
genMessageData = new Label(composite, SWT.NONE);
GridData gdGenMessageData = new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1);
genMessageData.setLayoutData(gdGenMessageData);
- genMessageData.setForeground(RED);
+ genMessageData.setForeground(red);
//Updated line
Label lblUpdated = new Label(composite, SWT.NONE);
@@ -626,8 +610,8 @@
grpSameTopic.setText(Messages.SummaryTabView_16);
grpSameTopic.setLayout(new FillLayout());
- UISameTopicTable tableUISameTopic = new UISameTopicTable();
- tableUISameTopic.createTableViewerSection(grpSameTopic);
+ UISameTopicTable tableUISameTopic = new UISameTopicTable(grpSameTopic);
+ tableUISameTopic.createTableViewerSection();
tableSameTopicViewer = tableUISameTopic.getViewer();
tableSameTopicViewer.addDoubleClickListener(doubleClickSelectionChangeListener());
@@ -642,8 +626,8 @@
grpRelatedChanges.setText(Messages.SummaryTabView_17);
grpRelatedChanges.setLayout(new FillLayout());
- UIRelatedChangesTable tableUIRelatedChanges = new UIRelatedChangesTable();
- tableUIRelatedChanges.createTableViewerSection(grpRelatedChanges);
+ UIRelatedChangesTable tableUIRelatedChanges = new UIRelatedChangesTable(grpRelatedChanges);
+ tableUIRelatedChanges.createTableViewerSection();
tableRelatedChangesViewer = tableUIRelatedChanges.getViewer();
tableRelatedChangesViewer.addDoubleClickListener(doubleClickSelectionChangeListener());
@@ -658,8 +642,8 @@
grpConflictsWith.setText(Messages.SummaryTabView_18);
grpConflictsWith.setLayout(new FillLayout());
- UIConflictsWithTable tableUIConflictsWith = new UIConflictsWithTable();
- tableUIConflictsWith.createTableViewerSection(grpConflictsWith);
+ UIConflictsWithTable tableUIConflictsWith = new UIConflictsWithTable(grpConflictsWith);
+ tableUIConflictsWith.createTableViewerSection();
tableConflictsWithViewer = tableUIConflictsWith.getViewer();
tableConflictsWithViewer.addDoubleClickListener(doubleClickSelectionChangeListener());
@@ -792,16 +776,23 @@
try {
reviewerCmdResult = addReviewerCmd.call();
} catch (EGerritException e3) {
- if (e3.getCode() == EGerritException.SHOWABLE_MESSAGE) {
- String message = input.getReviewer() + Messages.SummaryTabView_21;
- UIUtils.displayInformation(TITLE, message);
- } else {
- EGerritCorePlugin
- .logError(fGerritClient.getRepository().formatGerritVersion() + e3.getMessage());
- }
+ handleAddReviewerException(input, e3);
}
return reviewerCmdResult;
}
+
+ /**
+ * @param input
+ * @param e3
+ */
+ private void handleAddReviewerException(AddReviewerInput input, EGerritException e3) {
+ if (e3.getCode() == EGerritException.SHOWABLE_MESSAGE) {
+ String message = input.getReviewer() + Messages.SummaryTabView_21;
+ UIUtils.displayInformation(TITLE, message);
+ } else {
+ EGerritCorePlugin.logError(fGerritClient.getRepository().formatGerritVersion() + e3.getMessage());
+ }
+ }
};
}
@@ -818,42 +809,62 @@
if (viewerCell != null && viewerCell.getColumnIndex() == 0) {
//Selected the first column, so we can send the delete option
//Otherwise, do not delete
- ISelection selection = tableReviewersViewer.getSelection();
- if (selection instanceof IStructuredSelection) {
+ selectReviewerToDelete();
+ }
+ }
- IStructuredSelection structuredSelection = (IStructuredSelection) selection;
+ /**
+ *
+ */
+ private void selectReviewerToDelete() {
+ ISelection selection = tableReviewersViewer.getSelection();
+ if (selection instanceof IStructuredSelection) {
- Object element = structuredSelection.getFirstElement();
+ IStructuredSelection structuredSelection = (IStructuredSelection) selection;
- if (element instanceof ReviewerInfo) {
+ Object element = structuredSelection.getFirstElement();
- ReviewerInfo reviewerInfo = (ReviewerInfo) element;
- //Verify is the current use can be deleted or not
- if (reviewerInfo.isDeleteable()) {
- //Add a safety dialog to confirm the deletion
+ if (element instanceof ReviewerInfo) {
- if (!MessageDialog.openConfirm(tableReviewersViewer.getTable().getShell(),
- Messages.SummaryTabView_22, Messages.SummaryTabView_23 + reviewerInfo.getName()
- + Messages.SummaryTabView_24)) {
- return;
- }
-
- DeleteReviewerCommand deleteReviewerCmd = fGerritClient.deleteReviewer(
- fChangeInfo.getId(), String.valueOf(reviewerInfo.get_account_id()));
-
- try {
- deleteReviewerCmd.call();
- fChangeInfo.getComputedReviewers().remove(reviewerInfo);
- loader.reload(true);
- } catch (EGerritException e3) {
- EGerritCorePlugin.logError(
- fGerritClient.getRepository().formatGerritVersion() + e3.getMessage());
- }
- }
- }
+ deleteReviewerCommand((ReviewerInfo) element);
}
}
}
+
+ /**
+ * @param element
+ */
+ private void deleteReviewerCommand(ReviewerInfo reviewerInfo) {
+
+ //Verify is the current use can be deleted or not
+ if (reviewerInfo.isDeleteable()) {
+ //Add a safety dialog to confirm the deletion
+
+ if (!MessageDialog.openConfirm(tableReviewersViewer.getTable().getShell(),
+ Messages.SummaryTabView_22,
+ Messages.SummaryTabView_23 + reviewerInfo.getName() + Messages.SummaryTabView_24)) {
+ return;
+ }
+
+ execDeleteReviewerCommand(reviewerInfo);
+ }
+ }
+
+ /**
+ * @param reviewerInfo
+ */
+ private void execDeleteReviewerCommand(ReviewerInfo reviewerInfo) {
+ DeleteReviewerCommand deleteReviewerCmd = fGerritClient.deleteReviewer(fChangeInfo.getId(),
+ String.valueOf(reviewerInfo.get_account_id()));
+
+ try {
+ deleteReviewerCmd.call();
+ fChangeInfo.getComputedReviewers().remove(reviewerInfo);
+ loader.reload(true);
+ } catch (EGerritException e3) {
+ EGerritCorePlugin.logError(fGerritClient.getRepository().formatGerritVersion() + e3.getMessage());
+ }
+ }
};
}
@@ -1066,10 +1077,13 @@
protected String calculate() {
Iterator<ReviewerInfo> it = observedTags.iterator();
String result = ""; //$NON-NLS-1$
+ StringBuilder sb = new StringBuilder();
while (it.hasNext()) {
Object object = it.next();
- result += object.toString() + ", "; //$NON-NLS-1$
+ sb.append(object.toString());
+ sb.append(", "); //$NON-NLS-1$
}
+ result = sb.toString();
if (!result.isEmpty()) {
int last = result.lastIndexOf(',');
result = result.substring(0, last);
@@ -1095,10 +1109,13 @@
protected String calculate() {
Iterator<ReviewerInfo> it = observedBranches.iterator();
String result = ""; //$NON-NLS-1$
+ StringBuilder sb = new StringBuilder();
while (it.hasNext()) {
Object object = it.next();
- result += object.toString() + ", "; //$NON-NLS-1$
+ sb.append(object.toString());
+ sb.append(", "); //$NON-NLS-1$
}
+ result = sb.toString();
if (!result.isEmpty()) {
int last = result.lastIndexOf(',');
result = result.substring(0, last);