// ============================================================================ // // Copyright (C) 2006-2016 Talend Inc. - www.talend.com // // This source code is available under agreement available at // %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt // // You should have received a copy of the agreement // along with this program; if not, write to Talend SA // 9 rue Pages 92150 Suresnes, France // // ============================================================================ package com.amalto.workbench.utils; import org.eclipse.jface.fieldassist.SimpleContentProposalProvider; import org.eclipse.jface.text.ITextOperationTarget; import org.eclipse.jface.text.TextViewer; import org.eclipse.jface.text.TextViewerUndoManager; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.CCombo; import org.eclipse.swt.custom.StyledText; import org.eclipse.swt.events.KeyEvent; import org.eclipse.swt.events.KeyListener; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Text; import org.talend.commons.ui.swt.proposal.ContentProposalAdapterExtended; import com.amalto.workbench.proposal.ProposalUtils; /** * * @author aiming * */ public class WidgetUtils { public static void initRedoUndo(final TextViewer viewer) { TextViewerUndoManager undoManager = new TextViewerUndoManager(20); undoManager.connect(viewer); viewer.setUndoManager(undoManager); StyledText styledText = viewer.getTextWidget(); styledText.addKeyListener(new KeyListener() { public void keyPressed(KeyEvent e) { } private boolean isUndoKeyPress(KeyEvent e) { // CTRL + z return (e.keyCode == 'z' && e.stateMask == SWT.CTRL); } private boolean isRedoKeyPress(KeyEvent e) { // CTRL + y return (e.keyCode == 'y' && e.stateMask == SWT.CTRL); } public void keyReleased(KeyEvent e) { if (isUndoKeyPress(e)) { viewer.doOperation(ITextOperationTarget.UNDO); } else if (isRedoKeyPress(e)) { viewer.doOperation(ITextOperationTarget.REDO); } } }); // undoManager.getUndoContext(); } public static void enable(Composite parent, boolean enabled) { parent.setEnabled(enabled); for (Control control : parent.getChildren()) { if (control instanceof Text || control instanceof CCombo || control instanceof Combo || control instanceof Button || control instanceof StyledText) { control.setEnabled(enabled); if (control instanceof StyledText) { if (!enabled) control.setBackground(control.getParent().getBackground()); else control.setBackground(control.getDisplay().getSystemColor(SWT.COLOR_WHITE)); } } if (control instanceof Composite) { enable((Composite) control, enabled); } } } public static void changeWidgetColor(Control cotrl, Color color, boolean[] backForeGround) { if (backForeGround == null || backForeGround.length != 2) return; if (backForeGround[0]) cotrl.setBackground(color); if (backForeGround[1]) cotrl.setForeground(color); if (cotrl instanceof Composite) { Composite comp = (Composite) cotrl; Control[] children = comp.getChildren(); for (Control ch : children) { changeWidgetColor(ch, color, backForeGround); } } } public static ContentProposalAdapterExtended addContentProposal(Control control, String[] proposals, char[] autoActivationCharacters) { // add content proposal ContentProposalAdapterExtended adapter = ProposalUtils.getCommonProposal(control, new SimpleContentProposalProvider( proposals), autoActivationCharacters); // ContentProposalAdapter adapter = new ContentProposalAdapter(control,new TextContentAdapter(), new // SimpleContentProposalProvider(proposals), keyStroke, // autoActivationCharacters); return adapter; } }