/***************************************************
*
* cismet GmbH, Saarbruecken, Germany
*
* ... and it just works.
*
****************************************************/
/*
* Copyright (C) 2011 thorsten
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.cismet.cids.navigator.utils;
import Sirius.navigator.connection.SessionManager;
import Sirius.navigator.types.treenode.DefaultMetaTreeNode;
import Sirius.navigator.types.treenode.ObjectTreeNode;
import Sirius.navigator.ui.ComponentRegistry;
import Sirius.server.middleware.types.MetaObjectNode;
import Sirius.server.newuser.permission.Policy;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.UIManager;
import de.cismet.cids.dynamics.CidsBean;
import de.cismet.tools.Static2DTools;
/**
* DOCUMENT ME!
*
* @author thorsten
* @version $Revision$, $Date$
*/
public abstract class AbstractNewObjectToolbarAction extends AbstractAction implements CidsClientToolbarItem {
//~ Instance fields --------------------------------------------------------
ImageIcon add = new ImageIcon(this.getClass().getResource("/Sirius/navigator/resource/img/bullet_add.png"));
private final transient org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(this.getClass());
private CidsBean cb = null;
//~ Constructors -----------------------------------------------------------
/**
* Creates a new AbstractNewObjectToolbarAction object.
*/
public AbstractNewObjectToolbarAction() {
try {
cb = CidsBean.createNewCidsBeanFromTableName(getDomain(), getTableName());
final ImageIcon iconIcon = new ImageIcon(cb.getMetaObject().getMetaClass().getIconData());
final Icon base = (((iconIcon.getIconHeight() < 0) || (iconIcon.getIconWidth() < 0))
? UIManager.getIcon("FileView.fileIcon") : iconIcon);
// final ImageIcon overlay = Static2DTools.createOverlayIcon(add, 20, 20);
// setIcon(Static2DTools.mergeIcons(base, overlay));
setIcon(base);
setTooltip(getTooltipString());
} catch (Exception e) {
log.warn("Could not create CidsBean in ToolbarActionProvider. Check Permissions for " + getTableName() + "@"
+ getDomain(),
e);
}
}
//~ Methods ----------------------------------------------------------------
@Override
public boolean isVisible() {
return (cb != null) && cb.getHasWritePermission(SessionManager.getSession().getUser());
}
/**
* DOCUMENT ME!
*
* @param i DOCUMENT ME!
*/
public void setIcon(final Icon i) {
putValue(Action.SMALL_ICON, i);
}
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public Icon getIcon() {
return (Icon)getValue(Action.SMALL_ICON);
}
/**
* DOCUMENT ME!
*
* @param text DOCUMENT ME!
*/
public void setTooltip(final String text) {
putValue(Action.SHORT_DESCRIPTION, text);
}
@Override
public void actionPerformed(final ActionEvent ae) {
try {
cb = CidsBean.createNewCidsBeanFromTableName(getDomain(), getTableName());
final MetaObjectNode metaObjectNode = new MetaObjectNode(
-1,
SessionManager.getSession().getUser().getDomain(),
cb.getMetaObject(),
null,
null,
true,
Policy.createWIKIPolicy(),
-1,
null,
false);
final DefaultMetaTreeNode metaTreeNode = new ObjectTreeNode(metaObjectNode);
ComponentRegistry.getRegistry().showComponent(ComponentRegistry.ATTRIBUTE_EDITOR);
ComponentRegistry.getRegistry().getAttributeEditor().setTreeNode(metaTreeNode);
} catch (Exception ex) {
log.error("Could not create Object", ex);
}
}
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public abstract String getDomain();
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public abstract String getTableName();
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public abstract String getTooltipString();
}