/******************************************************************************* * Copyright (c) 2011, 2016 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * 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); } } }