/******************************************************************************* * Copyright 2017 Capital One Services, LLC and Bitwise, Inc. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * http://www.apache.org/licenses/LICENSE-2.0 * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *******************************************************************************/ package hydrograph.ui.dataviewer.support; import hydrograph.ui.dataviewer.adapters.DataViewerAdapter; import hydrograph.ui.dataviewer.constants.Messages; import hydrograph.ui.dataviewer.constants.StatusConstants; import hydrograph.ui.dataviewer.constants.ControlConstants; import hydrograph.ui.dataviewer.datastructures.StatusMessage; import java.util.Map; import org.apache.commons.lang.StringUtils; import org.eclipse.jface.action.StatusLineManager; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Text; /** * The Class StatusManager. * Provides mechanism for Data viewer status and controls manager * * @author Bitwise * */ public class StatusManager { private static final String STATUS_MESSAGE_SEPARATOR = " | "; private StatusLineManager statusLineManager; private DataViewerAdapter dataViewerAdapter; private Map<String,Control> windowControls; /** * * Get data viewer status bar * * @return {@link StatusLineManager} */ public StatusLineManager getStatusLineManager() { return statusLineManager; } /** * * Set {@link DataViewerAdapter} * * @param dataViewerAdapter */ public void setDataViewerAdapter(DataViewerAdapter dataViewerAdapter) { this.dataViewerAdapter = dataViewerAdapter; } /** * * Set list of window controls * * @param windowControls */ public void setWindowControls(Map<String,Control> windowControls) { this.windowControls = windowControls; } /** * * Set {@link StatusLineManager} * * @param statusLineManager */ public void setStatusLineManager(StatusLineManager statusLineManager) { this.statusLineManager = statusLineManager; } /** * * Set status in status data viewer status bar * * @param status */ public void setStatus(StatusMessage status) { statusLineManager.setErrorMessage(null); if (status.getReturnCode() == StatusConstants.ERROR) { statusLineManager.setErrorMessage(status.getStatusMessage()); return; } if (status.getReturnCode() == StatusConstants.PROGRESS) { statusLineManager.setMessage(status.getStatusMessage()); return; } StringBuilder stringBuilder = new StringBuilder(); if (dataViewerAdapter.getFileData().size() != 0) { stringBuilder.append(Messages.SHOWING_RECORDS_FROM + " " + (dataViewerAdapter.getOffset() + 1) + " to " + (dataViewerAdapter.getOffset() + dataViewerAdapter.getFileData().size()) + STATUS_MESSAGE_SEPARATOR); } else { stringBuilder.append(Messages.NO_MATCHING_RECORDS + STATUS_MESSAGE_SEPARATOR); } if (dataViewerAdapter.getRowCount() != null) { stringBuilder.append(Messages.ROW_COUNT + " " + dataViewerAdapter.getRowCount() + STATUS_MESSAGE_SEPARATOR); } if (!StringUtils.isEmpty(status.getStatusMessage())){ stringBuilder.append(status.getStatusMessage() + STATUS_MESSAGE_SEPARATOR); } statusLineManager.setMessage(stringBuilder.toString().substring(0, stringBuilder.length() - 2)); updatePageNumberDisplayPanel(); } /** * Append status message * * @param message */ public void appendStatusMessage(String message) { statusLineManager.setMessage(STATUS_MESSAGE_SEPARATOR + message); } /** * * Enable/Disable jump page panel from data viewer window * * @param enabled */ public void enableJumpPagePanel(boolean enabled){ windowControls.get(ControlConstants.JUMP_BUTTON).setEnabled(enabled); windowControls.get(ControlConstants.JUMP_TEXT).setEnabled(enabled); if(dataViewerAdapter.getRowCount()!=null){ if(((long)dataViewerAdapter.getTotalNumberOfPages()) == dataViewerAdapter.getCurrentPageNumber()){ windowControls.get(ControlConstants.NEXT_BUTTON).setEnabled(false); } } } /** * * Enable/Disable NEXT/PREVIOUS page buttons from data viewer window * * @param enabled */ public void enablePageSwitchPanel(boolean enabled){ windowControls.get(ControlConstants.PREVIOUS_BUTTON).setEnabled(enabled); windowControls.get(ControlConstants.NEXT_BUTTON).setEnabled(enabled); } /** * * Enable/Disable NEXT page buttons from data viewer window * * @param enabled */ public void enableNextPageButton(boolean enabled){ windowControls.get(ControlConstants.NEXT_BUTTON).setEnabled(enabled); } /** * * Enable/Disable PREVIOUS page buttons from data viewer window * * @param enabled */ public void enablePreviousPageButton(boolean enabled){ windowControls.get(ControlConstants.PREVIOUS_BUTTON).setEnabled(enabled); } /** * * Enable/Disable Pagination Panel from data viewer window * * @param enabled */ public void enablePaginationPanel(boolean enabled){ for(String control:windowControls.keySet()){ windowControls.get(control).setEnabled(enabled); } } /** * Update page number display panel from data viewer window * */ public void updatePageNumberDisplayPanel(){ ((Text)windowControls.get(ControlConstants.PAGE_NUMBER_DISPLAY)).setText(dataViewerAdapter.getPageStatus()); } /** * * Set all controls enabled or disabled based status of row count * * @param enabled */ public void setAllWindowControlsEnabled(boolean enabled) { for(String control: windowControls.keySet()){ windowControls.get(control).setEnabled(enabled); } if(dataViewerAdapter.getRowCount()==null){ enableJumpPagePanel(false); }else{ if(((long)dataViewerAdapter.getTotalNumberOfPages()) == dataViewerAdapter.getCurrentPageNumber()){ enableNextPageButton(false); } } if(dataViewerAdapter.getCurrentPageNumber()==1){ enablePreviousPageButton(false); } } /** * * Clear jump page text box from data viewer window * */ public void clearJumpToPageText(){ ((Text)windowControls.get(ControlConstants.JUMP_TEXT)).setText(""); } /** * Enables initial pagination panel controls * */ public void enableInitialPaginationContols(){ enablePageSwitchPanel(true); if(dataViewerAdapter.getRowCount()!=null){ if(((long)dataViewerAdapter.getTotalNumberOfPages()) == dataViewerAdapter.getCurrentPageNumber()){ enableNextPageButton(false); }else{ enableNextPageButton(true); } } if(dataViewerAdapter.getCurrentPageNumber()==1){ enablePreviousPageButton(false); } if(dataViewerAdapter.getRowCount()==null){ enableJumpPagePanel(false); }else{ enableJumpPagePanel(true); } } }