blob: c31851b3905f0b0c8cae2a2ae9998455061d6d61 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010-2013 Nokia Siemens Networks Oyj, Finland.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Nokia Siemens Networks - initial implementation
* Petri Tuononen - Initial implementation
*******************************************************************************/
package org.eclipse.cdt.managedbuilder.llvm.ui.preferences;
import org.eclipse.cdt.managedbuilder.llvm.ui.LlvmEnvironmentVariableSupplier;
import org.eclipse.cdt.managedbuilder.llvm.util.LlvmToolOptionPathUtil;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.DirectoryDialog;
import org.eclipse.swt.widgets.List;
import org.eclipse.swt.widgets.Text;
/**
* New implementation of LlvmListEditor.
* Used to select a library path from the dialog.
*
*/
public class LibraryPathListEditor extends LlvmListEditor {
/**
* Constructor.
*
* @param name the name of the preference this field editor works on
* @param labelText the label text of the field editor
* @param parent the parent of the field editor's control
*/
LibraryPathListEditor(String name, String labelText, Composite parent) {
super(name, labelText, parent);
}
@Override
/**
* Functionality for New button.
* Shows a browser dialog to select a directory and returns that directory path.
*/
protected String getNewInputObject() {
DirectoryDialog dlg = new DirectoryDialog(getShell());
final Text text = new Text(getShell(), SWT.BORDER);
dlg.setFilterPath(text.getText());
dlg.setText(Messages.LibraryPathListEditor_0);
dlg.setMessage(Messages.LibraryPathListEditor_1);
String dir = dlg.open();
if (dir == null) {
return null;
}
//remove white spaces
dir = dir.trim();
if (dir.length() != 0) {
//get all existing items in the list
String[] existingItems = getList().getItems();
//check that the list doesn't already contain the added item
if (existingItems.length > 0) {
//return null if duplicate item found
for (String item : existingItems) {
if (item.equalsIgnoreCase(dir)) {
return null;
}
}
}
//add a new library search path to LLVM preference store
LlvmPreferenceStore.appendLibraryPath(dir);
//add a new library path to LLVM linker's option
LlvmToolOptionPathUtil.addLlvmLibraryPath(dir);
//inform LLVM environment variable supplier that there has been a change
LlvmEnvironmentVariableSupplier.notifyPreferenceChange();
return dir;
}
return null;
}
@Override
/**
* Removes the path from the list as well as from the Tool's Option.
*/
protected void removePressed() {
List libPathList = getList();
setPresentsDefaultValue(false);
String[] selected = libPathList.getSelection();
for (String s : selected) {
//remove a library path from the LLVM preference store
LlvmPreferenceStore.removeLibraryPath(s);
//remove a library path from LLVM linker's option
LlvmToolOptionPathUtil.removeLlvmLibraryPath(s);
//inform LLVM environment variable supplier that there has been a change
LlvmEnvironmentVariableSupplier.notifyPreferenceChange();
libPathList.remove(s);
selectionChanged();
}
}
}