/******************************************************************************** * 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.parametergrid.dialog; import java.io.IOException; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.fieldassist.ControlDecoration; import org.eclipse.swt.SWT; import org.eclipse.swt.events.ControlAdapter; import org.eclipse.swt.events.ControlEvent; import org.eclipse.swt.events.FocusEvent; import org.eclipse.swt.events.FocusListener; import org.eclipse.swt.events.MouseEvent; import org.eclipse.swt.events.MouseListener; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.TraverseEvent; import org.eclipse.swt.events.TraverseListener; import org.eclipse.swt.events.VerifyEvent; import org.eclipse.swt.events.VerifyListener; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.FontData; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.FileDialog; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.MessageBox; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; import org.eclipse.ui.IFileEditorInput; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.forms.widgets.ColumnLayout; import org.eclipse.ui.forms.widgets.ColumnLayoutData; import org.slf4j.Logger; import hydrograph.ui.common.interfaces.parametergrid.DefaultGEFCanvas; import hydrograph.ui.common.util.ImagePathConstant; import hydrograph.ui.common.util.XMLConfigUtil; import hydrograph.ui.logging.factory.LogFactory; import hydrograph.ui.parametergrid.constants.ErrorMessages; import hydrograph.ui.parametergrid.constants.MessageType; import hydrograph.ui.parametergrid.textgridwidget.TextGrid; import hydrograph.ui.parametergrid.textgridwidget.columns.TextGridColumnLayout; import hydrograph.ui.parametergrid.textgridwidget.columns.TextGridRowLayout; import hydrograph.ui.parametergrid.utils.ParameterFileManager; import hydrograph.ui.propertywindow.messages.Messages; import hydrograph.ui.propertywindow.widgets.utility.WidgetUtility; public class ParameterGridDialog extends Dialog { private static final Logger logger = LogFactory.INSTANCE.getLogger(ParameterGridDialog.class); private TextGrid textGrid; private boolean runGraph; private Button headerCompositeCheckBox; private Text paramterFileTextBox; private String parameterFile; private ControlDecoration txtDecorator; private TraverseListener lastRowLastColumnTraverseListener; private boolean visibleParameterGirdNote=true; /** * Create the dialog. * @param parentShell */ public ParameterGridDialog(Shell parentShell) { super(parentShell); setShellStyle(SWT.CLOSE | SWT.RESIZE | SWT.TITLE | SWT.WRAP | SWT.APPLICATION_MODAL); runGraph=false; lastRowLastColumnTraverseListener=new TraverseListener() { @Override public void keyTraversed(TraverseEvent e) { if(e.detail == SWT.TRAVERSE_TAB_NEXT) addRowToTextGrid(); } }; } /** * Create contents of the dialog. * @param parent */ @Override protected Control createDialogArea(Composite parent) { final Composite container = createBaseContainer(parent); logger.debug("Created base container"); Composite composite = attachButtonContainer(container); logger.debug("attached button container"); attachFileParameterFileBrowser(container); logger.debug("added file browser"); attachTextGrid(container); logger.debug("attached TextGrid"); Label separator1 = new Label(container, SWT.SEPARATOR | SWT.HORIZONTAL); separator1.setVisible(false); Label separator2 = new Label(container, SWT.SEPARATOR | SWT.HORIZONTAL); separator2.setVisible(false); attachNote(container); addGridHeader(); logger.debug("attached Grid header"); attachAddRowButton(composite); logger.debug("attached add row button"); attachRemoveRowButton(composite); logger.debug("attached remove button"); fetchParameterFilePath(); logger.debug("Retrived parameter file path"); loadGridData(); logger.debug("loaded grid data"); addBaseContainerListeners(container); logger.debug("added listeners to base container"); if(textGrid.getLastAddedRow() != null){ ((Text)textGrid.getLastAddedRow().getChildren()[2]).addTraverseListener(lastRowLastColumnTraverseListener); } return container; } private void attachNote(final Composite container) { Label lblParameterGridNote=new Label(container, SWT.NONE); FontData fontData = lblParameterGridNote.getFont().getFontData()[0]; Font font = new Font(lblParameterGridNote.getDisplay(), new FontData(fontData.getName(), fontData .getHeight(), SWT.ITALIC)); lblParameterGridNote.setText("Note - New parameters will be visible only after you save the job."); lblParameterGridNote.setFont(font); if(!visibleParameterGirdNote) lblParameterGridNote.setVisible(false); } public void setVisibleParameterGridNote(boolean visibleParameterGirdNote){ this.visibleParameterGirdNote=visibleParameterGirdNote; } /** * Add listeners to base container * * @param container */ private void addBaseContainerListeners(final Composite container) { addControlListener(container); logger.debug("Added control listener"); } /** * Resizes base container on outer shell resize * * @param container */ private void addControlListener(final Composite container) { container.getParent().addControlListener(new ControlAdapter() { @Override public void controlResized(ControlEvent e) { //textGrid.setHeight(container.getParent().getBounds().height - 150); textGrid.setHeight(container.getParent().getBounds().height - 165); } }); } /** * populate parameterFile field variable * */ private void fetchParameterFilePath() { if(getComponentCanvas().getCurrentParameterFilePath() ==null){ if(getComponentCanvas().getParameterFile().startsWith("/") && getComponentCanvas().getParameterFile().contains(":")){ parameterFile = getComponentCanvas().getParameterFile().replaceFirst("/", ""); }else{ parameterFile = getComponentCanvas().getParameterFile(); } }else{ parameterFile = getComponentCanvas().getCurrentParameterFilePath(); } } private void attachRemoveRowButton(Composite composite) { Label btnRemove = new Label(composite, SWT.NONE); btnRemove.setLayoutData(getGridControlButtonLayout()); btnRemove.setText(""); btnRemove.setImage(ImagePathConstant.DELETE_BUTTON.getImageFromRegistry()); addRemoveRowButtonListener(btnRemove); } private void addRemoveRowButtonListener(Label btnRemove) { btnRemove.addMouseListener(new MouseListener() { @Override public void mouseUp(MouseEvent e) { if(textGrid.getLastAddedRow() != null){ ((Text)textGrid.getLastAddedRow().getChildren()[2]).removeTraverseListener(lastRowLastColumnTraverseListener); } textGrid.removeSelectedRows(); if(textGrid.getLastAddedRow() != null){ ((Text)textGrid.getLastAddedRow().getChildren()[2]).addTraverseListener(lastRowLastColumnTraverseListener); if(((Text)textGrid.getLastAddedRow().getChildren()[1]).getEditable()){ ((Text)textGrid.getLastAddedRow().getChildren()[1]).setFocus(); }else{ ((Text)textGrid.getLastAddedRow().getChildren()[2]).setFocus(); } } if(textGrid.getGrid().size() < 1){ headerCompositeCheckBox.setEnabled(false); headerCompositeCheckBox.setSelection(false); } } @Override public void mouseDown(MouseEvent e) { //Do Nothing } @Override public void mouseDoubleClick(MouseEvent e) { //Do Nothing } }); } private void attachAddRowButton(Composite composite) { Label btnAdd = new Label(composite, SWT.NONE); GridData gd_btnAdd = getGridControlButtonLayout(); btnAdd.setLayoutData(gd_btnAdd); btnAdd.setText(""); btnAdd.setImage(ImagePathConstant.ADD_BUTTON.getImageFromRegistry()); attachAddRowButtonListener(btnAdd); } private void addRowToTextGrid() { if(textGrid.getLastAddedRow() != null){ ((Text)textGrid.getLastAddedRow().getChildren()[2]).removeTraverseListener(lastRowLastColumnTraverseListener); } TextGridRowLayout textGridRowLayout = getTextGridRowLayout(); Composite emptyRow = textGrid.addEmptyRow(textGridRowLayout); ((Text)emptyRow.getChildren()[1]).setFocus(); addRowCheckBoxListener(emptyRow); headerCompositeCheckBox.setSelection(false); for(Composite row:textGrid.getGrid()){ final Text text=((Text)row.getChildren()[1]); txtDecorator=WidgetUtility.addDecorator(text,Messages.CHARACTERSET); txtDecorator.hide(); attachKeyValidator(text); attachKeyFocusListener(text); } ((Text)textGrid.getLastAddedRow().getChildren()[2]).addTraverseListener(lastRowLastColumnTraverseListener); textGrid.refresh(); textGrid.scrollToLastRow(); } // +++ Code Refactoring is in progress private void attachAddRowButtonListener(Label btnAdd) { btnAdd.addMouseListener(new MouseListener() { @Override public void mouseUp(MouseEvent e) { addRowToTextGrid(); headerCompositeCheckBox.setEnabled(true); } @Override public void mouseDown(MouseEvent e) { // Do Nothing } @Override public void mouseDoubleClick(MouseEvent e) { // Do Nothing } }); } private TextGridRowLayout getTextGridRowLayout() { TextGridRowLayout textGridRowLayout = new TextGridRowLayout(); textGridRowLayout.addColumn(new TextGridColumnLayout.Builder().columnWidth(90).editable(true).build()); textGridRowLayout.addColumn(new TextGridColumnLayout.Builder().grabHorizantalAccessSpace(true).editable(true).build()); return textGridRowLayout; } private void addRowCheckBoxListener(Composite emptyRow) { ((Button)emptyRow.getChildren()[0]).addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { // TODO Auto-generated method stub super.widgetSelected(e); changeHeaderCheckboxSelection(); } }); } private void attachTextGrid(final Composite container) { textGrid = new TextGrid(container); textGrid.clear(); } private Composite attachButtonContainer(final Composite container) { Composite composite = new Composite(container, SWT.NONE); composite.setLayout(new GridLayout(4, false)); ColumnLayoutData cld_composite = new ColumnLayoutData(); cld_composite.horizontalAlignment = ColumnLayoutData.RIGHT; cld_composite.heightHint = 30; composite.setLayoutData(cld_composite); return composite; } private Composite createBaseContainer(Composite parent) { final Composite container = (Composite) super.createDialogArea(parent); ColumnLayout cl_container = new ColumnLayout(); cl_container.verticalSpacing = 0; cl_container.maxNumColumns = 1; container.setLayout(cl_container); container.getShell().setText("Parameter Grid"); return container; } private void attachKeyFocusListener(final Text text) { text.addFocusListener(new FocusListener() { @Override public void focusLost(FocusEvent e) { txtDecorator.hide(); } @Override public void focusGained(FocusEvent e) { // TODO Auto-generated method stub } }); } private void attachKeyValidator(final Text text) { text.addVerifyListener(new VerifyListener() { @Override public void verifyText(VerifyEvent e) { txtDecorator.hide(); String currentText = ((Text) e.widget).getText(); String newName = (currentText.substring(0, e.start) + e.text + currentText.substring(e.end)); Matcher matchName = Pattern.compile("[\\@]{1}[\\{]{1}[\\w]*[\\}]{1}||[\\w]*").matcher(newName); if(!matchName.matches()){ text.setToolTipText(Messages.CHARACTERSET); txtDecorator=WidgetUtility.addDecorator(text,Messages.CHARACTERSET); txtDecorator.setDescriptionText(Messages.CHARACTERSET); txtDecorator.show(); e.doit=false; } else { text.setToolTipText(""); text.setMessage(""); txtDecorator.hide(); } } }); } private void loadGridData() { Map<String, String> parameterMap=new LinkedHashMap<>(); try { parameterMap = ParameterFileManager.getInstance().getParameterMap(parameterFile); } catch (IOException e) { //isValidParameterFile = false; logger.debug("Unable to get parameter Map ", e); } if(parameterFile != null){ if(parameterFile.contains(":")){ if(parameterFile.startsWith("/")) paramterFileTextBox.setText(parameterFile.replaceFirst("/", "")); else paramterFileTextBox.setText(parameterFile); } else { paramterFileTextBox.setText(parameterFile); } } //List of rows, where each row is list of columns List<List<String>> graphGridData = new LinkedList<>(); List<List<String>> externalGridData = new LinkedList<>(); List<String> canvasParameterList = getComponentCanvas().getLatestParameterList(); for(String key: parameterMap.keySet()){ List<String> rowData = new LinkedList<>(); if(canvasParameterList.contains(key)){ rowData.add(key); rowData.add(parameterMap.get(key)); graphGridData.add(rowData); }else{ rowData.add(key); rowData.add(parameterMap.get(key)); externalGridData.add(rowData); } } for(List<String> row: graphGridData){ TextGridRowLayout textGridRowLayout = new TextGridRowLayout(); textGridRowLayout.addColumn(new TextGridColumnLayout.Builder().columnWidth(90).editable(false).build()); textGridRowLayout.addColumn(new TextGridColumnLayout.Builder().grabHorizantalAccessSpace(true).editable(true).build()); textGrid.addDisabledRow(textGridRowLayout, row); } for(List<String> row: externalGridData){ TextGridRowLayout textGridRowLayout = new TextGridRowLayout(); textGridRowLayout.addColumn(new TextGridColumnLayout.Builder().columnWidth(90).editable(true).build()); textGridRowLayout.addColumn(new TextGridColumnLayout.Builder().grabHorizantalAccessSpace(true).editable(true).build()); textGrid.addRow(textGridRowLayout, row); } textGrid.refresh(); addGridRowSelectionListener(); } private void loadParameterFile(){ if(parameterFile == null){ return; } textGrid.clear(); //isValidParameterFile(); loadGridData(); } private List<String> getAllLines(String newParameterFile) throws Exception{ Path filePath = Paths.get(newParameterFile, ""); List<String> lines=null; Charset charset = Charset.forName(StandardCharsets.US_ASCII.name()); lines = Files.readAllLines(filePath, charset); return lines; } private boolean isValidParameterFile(String newParameterFile) { boolean isValidParameterFile = true; try{ List<String> fileContents = getAllLines(newParameterFile); for(String line: fileContents){ if(!line.startsWith("#") && !line.isEmpty()){ String[] keyvalue=line.split("="); if(keyvalue.length != 2){ isValidParameterFile = false; MessageBox messageBox = new MessageBox(new Shell(), SWT.ICON_ERROR | SWT.OK ); /*messageBox.setText("Error"); messageBox.setMessage("Unable to load parameter file.\nPlease Check file contents.\nContent should be in key=value format" + "\nEach line should have single key=value pair");*/ messageBox.setText(MessageType.ERROR.toString()); messageBox.setMessage(ErrorMessages.UNABLE_TO_LOAD_PARAM_FILE1); messageBox.open(); }else{ if(keyvalue[0].trim().contains(" ")){ isValidParameterFile = false; MessageBox messageBox = new MessageBox(new Shell(), SWT.ICON_ERROR | SWT.OK ); /*messageBox.setText("Error"); messageBox.setMessage("Unable to load parameter file.\nPlease Check file contents.\nContent should be in key=value format" + "\nEach line should have single key=value pair" + "\nParameter key should not contain spaces");*/ messageBox.setText(MessageType.ERROR.toString()); messageBox.setMessage(ErrorMessages.UNABLE_TO_LOAD_PARAM_FILE2); messageBox.open(); } } } } }catch(Exception e){ isValidParameterFile=false; MessageBox messageBox = new MessageBox(new Shell(), SWT.ICON_ERROR | SWT.OK ); /*messageBox.setText("Error"); messageBox.setMessage("Unable to load parameter file.\nPlease Check file format.\nExpected file format - US-ASCII");*/ //ErrorMessage as; messageBox.setText(MessageType.ERROR.toString()); messageBox.setMessage(ErrorMessages.UNABLE_TO_LOAD_PARAM_FILE3); messageBox.open(); } return isValidParameterFile; } private void attachFileParameterFileBrowser(Composite container){ Composite composite = new Composite(container, SWT.NONE); composite.setLayout(new GridLayout(4, false)); Label lblFile = new Label(composite, SWT.NONE); lblFile.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1)); lblFile.setText("Parameter File "); paramterFileTextBox = new Text(composite, SWT.BORDER); GridData gd_text = new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1); gd_text.widthHint = 179; paramterFileTextBox.setLayoutData(gd_text); final Button btnReloadParameterFile = new Button(composite, SWT.NONE); btnReloadParameterFile.setText("View Parameters"); btnReloadParameterFile.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { super.widgetSelected(e); parameterFile = paramterFileTextBox.getText(); if(isValidParameterFile(parameterFile)){ getComponentCanvas().setCurrentParameterFilePath(parameterFile); loadParameterFile(); } } }); final Button btnNewButton = new Button(composite, SWT.NONE); btnNewButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { FileDialog fd = new FileDialog(btnNewButton.getShell(), SWT.OPEN); fd.setText("Open"); Path path; if(parameterFile.contains(":")) path = Paths.get(parameterFile.replaceFirst("/", "")); else path = Paths.get(parameterFile); if(path.getParent() != null) fd.setFilterPath(path.getParent().toString()); else{ fd.setFilterPath(path.toAbsolutePath().getParent().toString()); } String[] filterExt = { "*.properties" }; fd.setFilterExtensions(filterExt); String selected = fd.open(); if(selected!=null){ if(isValidParameterFile(selected)){ paramterFileTextBox.setText(selected); } } if(!parameterFile.equals(paramterFileTextBox.getText())){ parameterFile=paramterFileTextBox.getText(); getComponentCanvas().setCurrentParameterFilePath(parameterFile); loadParameterFile(); } } }); btnNewButton.setText("..."); } public String getParameterFile(){ return parameterFile; } private void changeHeaderCheckboxSelection() { boolean allRowsSelected = true; for(Composite row:textGrid.getGrid()){ if(((Button)((Composite)row).getChildren()[0]).isEnabled()){ if(!((Button)row.getChildren()[0]).getSelection()){ allRowsSelected = false; break; } } } if(allRowsSelected==true){ headerCompositeCheckBox.setSelection(true); }else{ headerCompositeCheckBox.setSelection(false); } } public void addGridRowSelectionListener(){ for(Composite row: textGrid.getGrid()){ //((Button)row.getChildren()[0]). ((Button)row.getChildren()[0]).addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { // TODO Auto-generated method stub super.widgetSelected(e); changeHeaderCheckboxSelection(); } }); } } private void addGridHeader() { List<String> header= new LinkedList<>(); header.add("Name"); header.add("Value"); TextGridRowLayout textGridRowLayout = new TextGridRowLayout(); textGridRowLayout.addColumn(new TextGridColumnLayout.Builder().columnWidth(90).enabled(false).build()); textGridRowLayout.addColumn(new TextGridColumnLayout.Builder().grabHorizantalAccessSpace(true).enabled(false).build()); textGrid.addHeaderRow(textGridRowLayout, header); ((Button)textGrid.getHeaderComposite().getChildren()[0]).addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { // TODO Auto-generated method stub super.widgetSelected(e); if(((Button)textGrid.getHeaderComposite().getChildren()[0]).getSelection()){ textGrid.selectAllRows(); }else{ textGrid.clearSelections(); } } }); headerCompositeCheckBox = ((Button)textGrid.getHeaderComposite().getChildren()[0]); headerCompositeCheckBox.setEnabled(false); } private GridData getGridControlButtonLayout() { GridData gridControlButtonLayout = new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1); gridControlButtonLayout.widthHint = 21; gridControlButtonLayout.heightHint = 19; return gridControlButtonLayout; } private IPath getParameterFileIPath(){ IFileEditorInput input = (IFileEditorInput)PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor().getEditorInput() ; IFile file = input.getFile(); IProject activeProject = file.getProject(); String activeProjectName = activeProject.getName(); //java.nio.file.Path path= java.nio.file.Path(parameterFile) Path filePath = Paths.get(parameterFile, ""); IPath parameterFileIPath =new org.eclipse.core.runtime.Path("/"+activeProjectName+"/param/"+filePath.getFileName().toString().replace("job", "properties")); return parameterFileIPath; } @Override protected void okPressed() { boolean error=false; //ParameterFileManager parameterFileManager = new ParameterFileManager(getComponentCanvas().getParameterFile()); if(!paramterFileTextBox.getText().equals(parameterFile)){ MessageBox messageBox = new MessageBox(new Shell(), SWT.ICON_WARNING | SWT.OK | SWT.CANCEL ); /*messageBox.setText("Error"); messageBox.setMessage("The file " + paramterFileTextBox.getText() + " is not loded in grid\n" + "Pressing OK will override the existing file if any \n" + "Press Reload Button to load the file in grid");*/ messageBox.setText(MessageType.WARNING.toString()); messageBox.setMessage(ErrorMessages.PARAMETER_FILE_NOT_LOADED.replace("{@}", paramterFileTextBox.getText())); int buttonID = messageBox.open(); if(buttonID == SWT.OK){ parameterFile = paramterFileTextBox.getText(); getComponentCanvas().setCurrentParameterFilePath(parameterFile); }else{ return; } } textGrid.clearSelections(); Map<String,String> dataMap = new LinkedHashMap<>(); int rowId=0; for(List<String> row: textGrid.getData()){ dataMap.put(row.get(0), row.get(1)); if(row.get(0) == null || row.get(0).equals("")){ textGrid.selectRow(rowId); error=true; } rowId++; } if(error == false){ try { ParameterFileManager.getInstance().storeParameters(dataMap,null,parameterFile); } catch (IOException e) { MessageBox messageBox = new MessageBox(new Shell(), SWT.ICON_ERROR | SWT.OK ); /*messageBox.setText("Error"); messageBox.setMessage("Unable to store parameters to the file - \n" + e.getMessage());*/ messageBox.setText(MessageType.ERROR.toString()); messageBox.setMessage(ErrorMessages.UNABLE_TO_STORE_PARAMETERS); messageBox.open(); } runGraph=true; super.okPressed(); }else{ MessageBox messageBox = new MessageBox(new Shell(), SWT.ICON_ERROR | SWT.OK | SWT.CANCEL ); /*messageBox.setText("Error"); messageBox.setMessage("Parameter name can not be blank..please correct selected rows");*/ messageBox.setText(MessageType.ERROR.toString()); messageBox.setMessage(ErrorMessages.PARAMETER_NAME_CAN_NOT_BE_BLANK); int buttonID = messageBox.open(); switch(buttonID) { case SWT.OK: runGraph = true; break; case SWT.CANCEL: super.okPressed(); break; } } IFile file=ResourcesPlugin.getWorkspace().getRoot().getFile(getParameterFileIPath()); try { file.refreshLocal(IResource.DEPTH_ZERO, null); } catch (CoreException e) { logger.debug("Unable to refresh parameter file ", e); } } @Override protected void cancelPressed() { // TODO Auto-generated method stub runGraph = false; super.cancelPressed(); } public boolean canRunGraph(){ return runGraph; } private DefaultGEFCanvas getComponentCanvas() { if(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor() instanceof DefaultGEFCanvas) return (DefaultGEFCanvas) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor(); else return null; } /** * Create contents of the button bar. * @param parent */ @Override protected void createButtonsForButtonBar(Composite parent) { createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true); createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false); } /** * Return the initial size of the dialog. */ @Override protected Point getInitialSize() { return new Point(450, 423); //return new Point(450, 430); } public TextGrid getTextGrid() { return textGrid; } }