blob: da9d204b40f05c7b38ea7ae4e616666000547754 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2011, 2016 IBM Corporation and others.
*
* 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:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.help.ui.internal.preferences;
import java.util.List;
import org.eclipse.help.ui.internal.Messages;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.window.Window;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
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.Table;
public class ICButtons implements SelectionListener{
private HelpContentPreferencePage page;
private Button addIC;
private Button editIC;
private Button removeIC;
private Button moveUp;
private Button moveDown;
private Button testIC;
private Button enableIC;
private boolean enabled = true;
public ICButtons(Composite parent,HelpContentPreferencePage page)
{
this.page = page;
Composite container = new Composite(parent, SWT.NONE);
GridLayout layout = new GridLayout();
layout.marginHeight = 0;
layout.marginWidth = 0;
container.setLayout(layout);
container.setLayoutData(new GridData(GridData.FILL_VERTICAL));
container.setFont(parent.getFont());
addIC = createPushButton(container, Messages.HelpContentBlock_addICTitle);
editIC = createPushButton(container, Messages.HelpContentBlock_editICTitle);
removeIC = createPushButton(container, Messages.HelpContentBlock_removeICTitle);
testIC = createPushButton(container, Messages.HelpContentBlock_testConnectionTitle);
String enableTitle = Messages.HelpContentBlock_3.length() > Messages.HelpContentBlock_4.length() ?
Messages.HelpContentBlock_3 : Messages.HelpContentBlock_4;
enableIC = createPushButton(container, enableTitle);
moveUp = createPushButton(container, Messages.HelpContentBlock_upTitle);
moveDown = createPushButton(container, Messages.HelpContentBlock_downTitle);
page.getTable().getTable().addSelectionListener(this);
updateButtonStates();
}
public void setEnabled(boolean enabled)
{
this.enabled = enabled;
updateButtonStates();
}
public Button createPushButton(Composite parent, String buttonText) {
Button button = new Button(parent, SWT.PUSH);
button.setFont(parent.getFont());
button.setText(buttonText);
button.addSelectionListener(this);
page.setButtonLayoutData(button);
return button;
}
@Override
public void widgetSelected(SelectionEvent e) {
if (e.getSource() instanceof Button)
{
if (e.getSource()==addIC)
addIC();
else if (e.getSource()==editIC)
editIC();
else if (e.getSource()==removeIC)
removeIC();
else if (e.getSource()==testIC)
testIC();
else if (e.getSource()==enableIC)
enableIC();
else if (e.getSource()==moveUp)
move(-1);
else if (e.getSource()==moveDown)
move(1);
}
else if (e.getSource() instanceof Table)
updateButtonStates();
}
@Override
public void widgetDefaultSelected(SelectionEvent e) {
if (e.getSource() instanceof Table)
editIC();
}
public void addIC()
{
ICDialog dialog = new ICDialog(page.getShell());
if (dialog.open() == Window.OK) {
page.getTable().addIC(dialog.getIC());
updateButtonStates();
}
}
public void editIC()
{
IStructuredSelection selection = (IStructuredSelection)page.getTable().getSelection();
IC ic = (IC)selection.getFirstElement();
if (ic==null)
return;
ICDialog dialog = new ICDialog(page.getShell(),ic);
if (dialog.open() == Window.OK) {
page.getTable().editIC(dialog.getIC());
updateButtonStates();
}
}
public void removeIC()
{
IStructuredSelection selection = (IStructuredSelection)page.getTable().getSelection();
List<IC> ics = selection.toList();
String remove = ""; //$NON-NLS-1$
for (int i=0;i<ics.size();i++)
{
remove+="\n"+ics.get(i); //$NON-NLS-1$
}
boolean shouldRemove =
MessageDialog.openQuestion(
page.getShell(),
NLS.bind(Messages.HelpContentBlock_rmvTitle ,""), //$NON-NLS-1$
NLS.bind(Messages.HelpContentBlock_rmvLabel ,remove));
if (shouldRemove)
{
for (int i=0;i<ics.size();i++)
page.getTable().removeIC(ics.get(i));
updateButtonStates();
}
}
public void testIC()
{
IStructuredSelection selection = (IStructuredSelection)page.getTable().getSelection();
IC ic = (IC)selection.getFirstElement();
if (ic==null)
return;
ICDialog dialog = new ICDialog(page.getShell(),ic,true);
if (dialog.open() == Window.OK) {
page.getTable().editIC(dialog.getIC());
updateButtonStates();
}
/* boolean connected = TestConnectionUtility.testConnection(ic.getHost(),
ic.getPort()+"", ic.getPath(),ic.getProtocol());
TestICDialog dialog = new TestICDialog(page.getShell(),ic);
dialog.setConnectionStatus(connected);
dialog.open();
*/
}
public void enableIC()
{
int indexes[] = page.getTable().getTable().getSelectionIndices();
IStructuredSelection selection = (IStructuredSelection)page.getTable().getSelection();
List<IC> ics = selection.toList();
boolean enable = enableIC.getText().equals(Messages.HelpContentBlock_4);
for (int i=0;i<ics.size();i++)
{
ics.get(i).setEnabled(enable);
page.getTable().getTableViewer().replace(ics.get(i), indexes[i]);
}
page.getTable().refresh();
updateButtonStates();
}
public void move(int offset)
{
int index = page.getTable().getTable().getSelectionIndices()[0];
List<IC> ics = page.getTable().getICs();
IC x = ics.get(index);
IC y = ics.get(index + offset);
ics.set(index+offset,x);
ics.set(index,y);
page.getTable().getTableViewer().getContentProvider().inputChanged(
page.getTable().getTableViewer(), null, ics);
page.getTable().getTableViewer().replace(x,index+offset);
page.getTable().getTableViewer().replace(y,index);
page.getTable().refresh();
page.getTable().getTable().deselectAll();
page.getTable().getTable().select(index+offset);
updateButtonStates();
}
public void updateButtonStates()
{
if (!enabled)
{
editIC.setEnabled(false);
testIC.setEnabled(false);
moveUp.setEnabled(false);
moveDown.setEnabled(false);
enableIC.setEnabled(false);
addIC.setEnabled(false);
removeIC.setEnabled(false);
return;
}
addIC.setEnabled(true);
IC firstIC = (IC)(((IStructuredSelection)page.getTable().getSelection()).getFirstElement());
if (firstIC!=null)
{
int index = page.getTable().getTable().getSelectionIndices()[0];
enableIC.setText(firstIC.isEnabled() ? Messages.HelpContentBlock_3 : Messages.HelpContentBlock_4);
if (page.getTable().getTable().getSelectionIndices().length==1)
{
editIC.setEnabled(true);
testIC.setEnabled(true);
moveUp.setEnabled(index!=0);
moveDown.setEnabled(index!=page.getTable().getICs().size()-1);
}
else
{
editIC.setEnabled(false);
testIC.setEnabled(false);
moveUp.setEnabled(false);
moveDown.setEnabled(false);
}
removeIC.setEnabled(true);
enableIC.setEnabled(true);
}
else
{
editIC.setEnabled(false);
testIC.setEnabled(false);
moveUp.setEnabled(false);
moveDown.setEnabled(false);
removeIC.setEnabled(false);
enableIC.setEnabled(false);
}
}
}