/******************************************************************************* * 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.expression.editor.dialogs; import hydrograph.ui.expression.editor.Constants; import hydrograph.ui.expression.editor.PathConstant; import hydrograph.ui.expression.editor.composites.CategoriesDialogSourceComposite; import hydrograph.ui.expression.editor.composites.CategoriesDialogTargetComposite; import hydrograph.ui.expression.editor.jar.util.BuildExpressionEditorDataSturcture; import hydrograph.ui.logging.factory.LogFactory; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.Properties; import org.apache.commons.lang.StringUtils; import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.SashForm; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Shell; import org.slf4j.Logger; public class AddCategoreisDialog extends Dialog { private static final String DIALOG_TITLE = "Configuration"; private CategoriesDialogTargetComposite categoriesDialogTargetComposite; private CategoriesDialogSourceComposite categoriesDialogSourceComposite; private Logger LOGGER = LogFactory.INSTANCE.getLogger(AddCategoreisDialog.class); /** * Create the dialog. * @param parentShell */ public AddCategoreisDialog(Shell parentShell) { super(parentShell); setShellStyle(SWT.MAX|SWT.RESIZE|SWT.APPLICATION_MODAL); } /** * Create contents of the dialog. * @param parent */ @Override protected Control createDialogArea(Composite parent) { Composite container = (Composite) super.createDialogArea(parent); container.setLayout(new GridLayout(1, false)); this.getShell().setText(DIALOG_TITLE); Composite mainComposite = new Composite(container, SWT.BORDER); mainComposite.setLayout(new GridLayout(1, false)); mainComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); SashForm sashForm = new SashForm(mainComposite, SWT.NONE); sashForm.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); categoriesDialogSourceComposite=new CategoriesDialogSourceComposite(sashForm,null, SWT.NONE); categoriesDialogTargetComposite=new CategoriesDialogTargetComposite(sashForm,categoriesDialogSourceComposite, SWT.NONE); sashForm.setWeights(new int[] {1, 1}); return container; } /** * 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(600, 500); } @Override protected void okPressed() { if(createPropertyFileForSavingData()){ // BuildExpressionEditorDataSturcture.INSTANCE.refreshRepo(); } super.okPressed(); } public boolean createPropertyFileForSavingData() { IProject iProject=BuildExpressionEditorDataSturcture.INSTANCE.getCurrentProject(); IFolder iFolder=iProject.getFolder(PathConstant.PROJECT_RESOURCES_FOLDER); FileOutputStream file = null; Properties properties=new Properties(); try { if(!iFolder.exists()){ iFolder.create(true, true, new NullProgressMonitor()); } for(String items:categoriesDialogTargetComposite.getTargetList().getItems()){ String jarFileName=StringUtils.trim(StringUtils.substringAfter(items, Constants.DASH)); String packageName=StringUtils.trim(StringUtils.substringBefore(items, Constants.DASH)); properties.setProperty(packageName,jarFileName ); } file=new FileOutputStream(iFolder.getLocation().toString()+File.separator+PathConstant.EXPRESSION_EDITOR_EXTERNAL_JARS_PROPERTIES_FILES); properties.store(file, ""); return true; } catch (IOException | CoreException exception) { LOGGER.error("Exception occurred while saving jar file path at projects setting folder",exception); } finally{ if (file != null) { try { file.close(); } catch (IOException e) { LOGGER.warn("Exception in closing output stream. The error message is " + e.getMessage()); } } } return false; } public static void main(String[] args) { AddCategoreisDialog dialog=new AddCategoreisDialog(new Shell()); dialog.setShellStyle(SWT.MAX|SWT.MIN|SWT.CLOSE); dialog.open(); } }