package tk.eclipse.plugin.csseditor.editors;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.ITextSelection;
import org.eclipse.swt.graphics.RGB;
import org.eclipse.swt.widgets.ColorDialog;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.editors.text.TextEditor;
import tk.eclipse.plugin.htmleditor.HTMLPlugin;
import tk.eclipse.plugin.htmleditor.HTMLUtil;
/**
* This action opens {@link ColorDialog} and insert the selected color
* into the caret position as "#RRGGBB" format.
*
* @see org.eclipse.swt.widgets.ColorDialog
* @author Naoki Takezoe
*/
public class ChooseColorAction extends Action {
private TextEditor editor;
public ChooseColorAction(TextEditor editor){
super(HTMLPlugin.getResourceString("CSSEditor.ChooseColor"));
this.editor = editor;
}
@Override
public void run() {
IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
ColorDialog dialog = new ColorDialog(window.getShell());
RGB color = dialog.open();
if(color!=null){
IDocument doc = editor.getDocumentProvider().getDocument(editor.getEditorInput());
ITextSelection sel = (ITextSelection)editor.getSelectionProvider().getSelection();
try {
doc.replace(sel.getOffset(), 0, HTMLUtil.toHex(color));
} catch(Exception ex){
HTMLPlugin.logException(ex);
}
}
}
}