/******************************************************************************* * Copyright (c) 2014, 2015 Cisco Systems, Inc. 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 * *******************************************************************************/ package com.cisco.yangide.ext.refactoring.ui; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.ltk.ui.refactoring.UserInputWizardPage; import org.eclipse.osgi.util.NLS; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; 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.Label; import com.cisco.yangide.core.dom.ASTNamedNode; import com.cisco.yangide.core.dom.UsesNode; import com.cisco.yangide.ext.refactoring.code.InlineGroupingRefactoring; /** * @author Konstantin Zaitsev * @date Jul 30, 2014 */ public class InlineGroupingInputWizardPage extends UserInputWizardPage { private ASTNamedNode node; private Button allInlineSel; private Button deleteGroupCheck; private Button singleInlineSel; // private Button updateReferences; public InlineGroupingInputWizardPage(ASTNamedNode node) { super("InlineInputPage"); this.node = node; setDescription("Inline Grouping"); } @Override public void createControl(Composite parent) { Composite content = new Composite(parent, SWT.NONE); GridLayout layout = new GridLayout(1, false); layout.verticalSpacing = 5; content.setLayout(layout); String name = node instanceof UsesNode ? ((UsesNode) node).getGrouping().getName() : node.getName(); new Label(content, SWT.NONE).setText(NLS.bind("Inline grouping {0}:", name)); allInlineSel = new Button(content, SWT.RADIO); allInlineSel.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false)); allInlineSel.setText("&All references"); allInlineSel.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { setState(); } }); deleteGroupCheck = new Button(content, SWT.CHECK); GridData gd = new GridData(SWT.FILL, SWT.TOP, true, false); gd.horizontalIndent = 15; deleteGroupCheck.setLayoutData(gd); deleteGroupCheck.setText("&Delete grouping declaration"); deleteGroupCheck.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { setState(); } }); singleInlineSel = new Button(content, SWT.RADIO); singleInlineSel.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false)); singleInlineSel.setText("&Only the selected reference"); singleInlineSel.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { setState(); } }); Dialog.applyDialogFont(content); setControl(content); } @Override public void setVisible(boolean visible) { if (visible) { loadState(); } super.setVisible(visible); } private void setState() { deleteGroupCheck.setEnabled(allInlineSel.getSelection()); InlineGroupingRefactoring refactoring = (InlineGroupingRefactoring) getRefactoring(); refactoring.setInlineAll(allInlineSel.getSelection()); refactoring.setDeleteGrouping(deleteGroupCheck.getSelection()); } private void loadState() { InlineGroupingRefactoring refactoring = (InlineGroupingRefactoring) getRefactoring(); singleInlineSel.setEnabled(node instanceof UsesNode); allInlineSel.setSelection(refactoring.isInlineAll()); singleInlineSel.setSelection(!refactoring.isInlineAll()); deleteGroupCheck.setEnabled(allInlineSel.getSelection()); deleteGroupCheck.setSelection(refactoring.isDeleteGrouping()); } }