blob: 60eaaccafbcd8e027fafcd975e5701a98e018e23 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.pivot.wtk.skin.terra;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Transparency;
import org.apache.pivot.wtk.Button;
import org.apache.pivot.wtk.Component;
import org.apache.pivot.wtk.Cursor;
import org.apache.pivot.wtk.Dimensions;
import org.apache.pivot.wtk.MenuBar;
import org.apache.pivot.wtk.skin.MenuBarItemSkin;
/**
* Terra menu bar item skin.
*/
public class TerraMenuBarItemSkin extends MenuBarItemSkin {
@Override
public void install(Component component) {
super.install(component);
MenuBar.Item menuBarItem = (MenuBar.Item)component;
menuBarItem.setCursor(Cursor.DEFAULT);
}
@Override
public int getPreferredWidth(int height) {
MenuBar.Item menuBarItem = (MenuBar.Item)getComponent();
Button.DataRenderer dataRenderer = menuBarItem.getDataRenderer();
dataRenderer.render(menuBarItem.getButtonData(), menuBarItem, false);
return dataRenderer.getPreferredWidth(height);
}
@Override
public int getPreferredHeight(int width) {
MenuBar.Item menuBarItem = (MenuBar.Item)getComponent();
Button.DataRenderer dataRenderer = menuBarItem.getDataRenderer();
dataRenderer.render(menuBarItem.getButtonData(), menuBarItem, false);
return dataRenderer.getPreferredHeight(width);
}
@Override
public Dimensions getPreferredSize() {
MenuBar.Item menuBarItem = (MenuBar.Item)getComponent();
Button.DataRenderer dataRenderer = menuBarItem.getDataRenderer();
dataRenderer.render(menuBarItem.getButtonData(), menuBarItem, false);
return dataRenderer.getPreferredSize();
}
@Override
public void layout() {
// No-op
}
@Override
public void paint(Graphics2D graphics) {
MenuBar.Item menuBarItem = (MenuBar.Item)getComponent();
int width = getWidth();
int height = getHeight();
boolean highlight = menuBarItem.isActive();
// Paint highlight state
if (highlight) {
MenuBar menuBar = (MenuBar)menuBarItem.getParent();
Color activeBackgroundColor = (Color)menuBar.getStyles().get("activeBackgroundColor");
graphics.setColor(activeBackgroundColor);
graphics.fillRect(0, 0, width, height);
}
// Paint the content
Button.DataRenderer dataRenderer = menuBarItem.getDataRenderer();
dataRenderer.render(menuBarItem.getButtonData(), menuBarItem, highlight);
dataRenderer.setSize(width, height);
dataRenderer.paint(graphics);
}
@Override
public boolean isOpaque() {
boolean opaque = false;
MenuBar.Item menuBarItem = (MenuBar.Item)getComponent();
if (menuBarItem.isActive()) {
MenuBar menuBar = (MenuBar)menuBarItem.getParent();
Color activeBackgroundColor = (Color)menuBar.getStyles().get("activeBackgroundColor");
opaque = (activeBackgroundColor.getTransparency() == Transparency.OPAQUE);
}
return opaque;
}
public Color getPopupBorderColor() {
return (Color)menuPopup.getStyles().get("borderColor");
}
public void setPopupBorderColor(Color popupBorderColor) {
menuPopup.getStyles().put("borderColor", popupBorderColor);
}
public void setPopupBorderColor(String popupBorderColor) {
if (popupBorderColor == null) {
throw new IllegalArgumentException("popupBorderColor is null.");
}
menuPopup.getStyles().put("borderColor", popupBorderColor);
}
}