- private void onRowClicked(int row, boolean toggleSelection) {
- // Select the row that was clicked (-1 to account for header row).
- if (row > folderFileCount)
- return;
- if (clickShift) {
- GWT.log("Row is: " + row + " fs: " + firstShift, null);
- if (firstShift == -1)
- firstShift = row;
- else if (row > firstShift) {
- clearSelectedRows();
- for (int i = firstShift; i < row; i++) {
- selectedRows.add(startIndex + i);
- styleRow(i, true);
- }
- GSS.get().setCurrentSelection(getSelectedFiles());
- contextMenu.setFiles(getSelectedFiles());
- makeRowDraggable(row);
- } else if (row != -1 && row == firstShift) {
- selectedRows.add(row - 1);
- styleRow(row, true);
- styleRow(row - 1, true);
- GSS.get().setCurrentSelection(getSelectedFiles());
- contextMenu.setFiles(getSelectedFiles());
- makeRowDraggable(row);
- } else if (row < firstShift) {
- GWT.log("Row is:" + row + " fs:" + firstShift, null);
- clearSelectedRows();
-
- for (int i = firstShift; i >= row - 1; i--) {
- selectedRows.add(startIndex + i);
- styleRow(i, true);
- }
- GSS.get().setCurrentSelection(getSelectedFiles());
- makeRowDraggable(row);
- contextMenu.setFiles(getSelectedFiles());
- }
- } else if (row > 0)
- selectRow(row - 1, toggleSelection);
- }
-
- /**
- * Initializes the table so that it contains enough rows for a full page of
- * files.
- */
- private void initTable() {
- nameLabel = new HTML("Name");
- nameLabel.addClickHandler(new ClickHandler() {
-
- @Override
- public void onClick(ClickEvent event) {
- sortFiles("name");
-
- }
-
- });
- versionLabel = new HTML("Version");
- versionLabel.addClickHandler(new ClickHandler() {
-
- @Override
- public void onClick(ClickEvent event) {
- sortFiles("version");
- }
-
- });
- sizeLabel = new HTML("Size");
- sizeLabel.addClickHandler(new ClickHandler() {
-
- @Override
- public void onClick(ClickEvent event) {
- sortFiles("size");
- }
-
- });
- dateLabel = new HTML("Last modified");
- dateLabel.addClickHandler(new ClickHandler() {
-
- @Override
- public void onClick(ClickEvent event) {
- sortFiles("date");
- }
-
- });
- ownerLabel = new HTML("Owner");
- ownerLabel.addClickHandler(new ClickHandler() {
-
- @Override
- public void onClick(ClickEvent event) {
- sortFiles("owner");
- }
-
- });
- pathLabel = new HTML("Path");
- pathLabel.addClickHandler(new ClickHandler() {
-
- @Override
- public void onClick(ClickEvent event) {
- sortFiles("path");
- }
-
- });
- // Create the header row.
- table.setText(0, 0, "");
- table.setWidget(0, 1, nameLabel);
- table.setWidget(0, 2, ownerLabel);
- table.setWidget(0, 3, pathLabel);
- table.setWidget(0, 4, versionLabel);
- table.setWidget(0, 5, sizeLabel);
- table.setWidget(0, 6, dateLabel);
- table.setWidget(0, 7, navBar);
- table.getRowFormatter().setStyleName(0, "gss-ListHeader");
-
- // Initialize the rest of the rows.
- for (int i = 1; i < GSS.VISIBLE_FILE_COUNT + 1; ++i) {
- table.setText(i, 0, "");
- table.setText(i, 1, "");
- table.setText(i, 2, "");
- table.setText(i, 3, "");
- table.setText(i, 4, "");
- table.setText(i, 5, "");
- table.setText(i, 6, "");
- table.setText(i, 7, "");
- table.getCellFormatter().setWordWrap(i, 0, false);
- table.getCellFormatter().setWordWrap(i, 1, false);
- table.getCellFormatter().setWordWrap(i, 2, false);
- table.getCellFormatter().setWordWrap(i, 3, false);
- table.getCellFormatter().setWordWrap(i, 4, false);
- table.getCellFormatter().setWordWrap(i, 5, false);
- table.getCellFormatter().setWordWrap(i, 6, false);
- table.getCellFormatter().setWordWrap(i, 7, false);
- table.getCellFormatter().setHorizontalAlignment(i, 4, HasHorizontalAlignment.ALIGN_CENTER);
- }
- prevButton.setVisible(false);
- nextButton.setVisible(false);
- }
-
- /**
- * Selects the given row (relative to the current page).
- *
- * @param row the row to be selected
- */
- private void selectRow(final int row, boolean toggleSelection) {
- if (row < folderFileCount) {
- if (clickControl)
- if (selectedRows.contains(row) && toggleSelection) {
- int i = selectedRows.indexOf(startIndex + row);
- selectedRows.remove(i);
- styleRow(row, false);
- } else {
- selectedRows.add(startIndex + row);
- styleRow(row, true);
- }
- else if (selectedRows.size() == 1 && selectedRows.contains(row) && toggleSelection){
- clearSelectedRows();
- return;
- }
- else {
- clearSelectedRows();
- selectedRows.add(startIndex + row);
- styleRow(row, true);
- }
- if (selectedRows.size() == 1)
- GSS.get().setCurrentSelection(files.get(selectedRows.get(0)));
- else if(selectedRows.size() == 0)
- GSS.get().setCurrentSelection(null);
- else
- GSS.get().setCurrentSelection(getSelectedFiles());
- contextMenu.setFiles(getSelectedFiles());
- makeRowDraggable(row+1);
- }
- }
-
- public List<FileResource> getSelectedFiles() {
- List<FileResource> result = new ArrayList();
- for (int i : selectedRows)
- result.add(files.get(i));
- return result;
- }