/*
* @(#)SelectionColorChooserAction.java
*
* Copyright (c) 1996-2010 The authors and contributors of JHotDraw.
* You may not use, copy or modify this file, except in compliance with the
* accompanying license terms.
*/
package org.jhotdraw.draw.action;
import javax.annotation.Nullable;
import java.util.*;
import java.awt.*;
import javax.swing.*;
import org.jhotdraw.draw.*;
/**
* This is like EditorColorChooserAction, but the JColorChooser is initialized with
* the color of the currently selected Figures.
* <p>
* The behavior for choosing the initial color of the JColorChooser matches with
* {@link SelectionColorIcon }.
*
* @author Werner Randelshofer
* @version $Id$
*/
public class SelectionColorChooserAction extends EditorColorChooserAction {
private static final long serialVersionUID = 1L;
/** Creates a new instance. */
public SelectionColorChooserAction(DrawingEditor editor, AttributeKey<Color> key) {
this(editor, key, null, null);
}
/** Creates a new instance. */
public SelectionColorChooserAction(DrawingEditor editor, AttributeKey<Color> key, @Nullable Icon icon) {
this(editor, key, null, icon);
}
/** Creates a new instance. */
public SelectionColorChooserAction(DrawingEditor editor, AttributeKey<Color> key, @Nullable String name) {
this(editor, key, name, null);
}
public SelectionColorChooserAction(DrawingEditor editor, final AttributeKey<Color> key, @Nullable String name, @Nullable Icon icon) {
this(editor, key, name, icon, new HashMap<AttributeKey<?>,Object>());
}
public SelectionColorChooserAction(DrawingEditor editor, final AttributeKey<Color> key, @Nullable String name, @Nullable Icon icon,
@Nullable Map<AttributeKey<?>,Object> fixedAttributes) {
super(editor, key, name, icon, fixedAttributes);
}
@Override
protected Color getInitialColor() {
Color initialColor = null;
DrawingView v = getEditor().getActiveView();
if (v != null && v.getSelectedFigures().size() == 1) {
Figure f = v.getSelectedFigures().iterator().next();
initialColor = f.get(key);
}
if (initialColor == null) {
initialColor = super.getInitialColor();
}
return initialColor;
}
}