- Add/Remove favourite item implemented
- Added calendar to dashboard
This commit is contained in:
parent
c1f899f624
commit
c735de7cab
|
@ -17,6 +17,7 @@
|
|||
|
||||
package org.adempiere.webui;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.io.Serializable;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
|
@ -58,11 +59,13 @@ import org.zkoss.util.media.AMedia;
|
|||
import org.zkoss.zk.ui.Component;
|
||||
import org.zkoss.zk.ui.Executions;
|
||||
import org.zkoss.zk.ui.Page;
|
||||
import org.zkoss.zk.ui.event.DropEvent;
|
||||
import org.zkoss.zk.ui.event.Event;
|
||||
import org.zkoss.zk.ui.event.EventListener;
|
||||
import org.zkoss.zk.ui.event.Events;
|
||||
import org.zkoss.zkex.zul.Borderlayout;
|
||||
import org.zkoss.zkex.zul.Center;
|
||||
import org.zkoss.zkex.zul.East;
|
||||
import org.zkoss.zkex.zul.North;
|
||||
import org.zkoss.zkex.zul.West;
|
||||
import org.zkoss.zul.Box;
|
||||
|
@ -70,7 +73,10 @@ import org.zkoss.zul.Caption;
|
|||
import org.zkoss.zul.Groupbox;
|
||||
import org.zkoss.zul.Hbox;
|
||||
import org.zkoss.zul.Iframe;
|
||||
import org.zkoss.zul.Image;
|
||||
import org.zkoss.zul.Separator;
|
||||
import org.zkoss.zul.Treeitem;
|
||||
import org.zkoss.zul.Treerow;
|
||||
import org.zkoss.zul.Vbox;
|
||||
|
||||
/**
|
||||
|
@ -99,6 +105,10 @@ public class Desktop extends AbstractUIPart implements MenuListener, Serializabl
|
|||
|
||||
private Button btnNotice, btnRequest, btnWorkflow;
|
||||
|
||||
private int m_AD_Tree_ID;
|
||||
|
||||
private Box bxFav;
|
||||
|
||||
public Desktop()
|
||||
{
|
||||
windows = new ArrayList<Object>();
|
||||
|
@ -153,36 +163,80 @@ public class Desktop extends AbstractUIPart implements MenuListener, Serializabl
|
|||
windowContainer.addWindow(homeTab, "Home", false);
|
||||
|
||||
Hbox hbox = new Hbox();
|
||||
homeTab.appendChild(hbox);
|
||||
hbox.setWidths("30%, 70%");
|
||||
hbox.setStyle("margin: 5px");
|
||||
hbox.setSpacing("5px");
|
||||
hbox.setWidths("50%, 50%");
|
||||
|
||||
Vbox vbGroupBox = new Vbox();
|
||||
hbox.appendChild(vbGroupBox);
|
||||
vbGroupBox.setWidth("100%");
|
||||
Vbox vbCol1 = new Vbox();
|
||||
hbox.appendChild(vbCol1);
|
||||
vbCol1.setWidth("100%");
|
||||
|
||||
Groupbox gbxFav = new Groupbox();
|
||||
vbGroupBox.appendChild(gbxFav);
|
||||
gbxFav.appendChild(new Caption("Favourites"));
|
||||
vbCol1.appendChild(gbxFav);
|
||||
Caption caption = new Caption("Favourites");
|
||||
// Elaine 2008/07/24
|
||||
Image img = new Image("/images/Delete24.gif");
|
||||
caption.appendChild(img);
|
||||
img.setAlign("right");
|
||||
img.setDroppable("deleteFav");
|
||||
img.addEventListener(Events.ON_DROP, this);
|
||||
//
|
||||
gbxFav.appendChild(caption);
|
||||
gbxFav.appendChild(createFavouritesPanel());
|
||||
gbxFav.setMold("3d");
|
||||
gbxFav.setClosable(true);
|
||||
// Elaine 2008/07/24
|
||||
gbxFav.setDroppable("favourite");
|
||||
gbxFav.addEventListener(Events.ON_DROP, this);
|
||||
//
|
||||
|
||||
Groupbox gbxView = new Groupbox();
|
||||
vbGroupBox.appendChild(gbxView);
|
||||
vbCol1.appendChild(gbxView);
|
||||
gbxView.appendChild(new Caption("Views"));
|
||||
gbxView.appendChild(createViewPanel());
|
||||
gbxView.setMold("3d");
|
||||
gbxView.setClosable(true);
|
||||
|
||||
Vbox vbCol2 = new Vbox();
|
||||
hbox.appendChild(vbCol2);
|
||||
vbCol2.setWidth("100%");
|
||||
|
||||
Groupbox gbxCalendar = new Groupbox();
|
||||
vbCol2.appendChild(gbxCalendar);
|
||||
gbxCalendar.appendChild(new Caption("Calendar"));
|
||||
Iframe iframe = new Iframe("http://www.google.com/calendar/embed?showTitle=0&showTabs=0&height=300&wkst=1&bgcolor=%23FFFFFF&color=%232952A3");
|
||||
iframe.setStyle("border-width: 0;");
|
||||
iframe.setScrolling("no");
|
||||
iframe.setWidth("300px");
|
||||
iframe.setHeight("300px");
|
||||
gbxCalendar.appendChild(iframe);
|
||||
gbxCalendar.setStyle("margin-left: 5px; margin-right: 5px; margin-top: 0px; margin-bottom: 0px;");
|
||||
gbxCalendar.setMold("3d");
|
||||
gbxCalendar.setClosable(true);
|
||||
|
||||
final Groupbox gbxAct = new Groupbox();
|
||||
vbGroupBox.appendChild(gbxAct);
|
||||
vbCol2.appendChild(gbxAct);
|
||||
gbxAct.appendChild(new Caption("Activities"));
|
||||
gbxAct.appendChild(createActivitiesPanel());
|
||||
gbxAct.setStyle("margin-left: 5px; margin-right: 5px; margin-top: 0px; margin-bottom: 0px;");
|
||||
gbxAct.setMold("3d");
|
||||
gbxAct.setClosable(true);
|
||||
|
||||
WPAPanel panel = WPAPanel.get();
|
||||
hbox.appendChild(panel);
|
||||
Borderlayout borderlayout = new Borderlayout();
|
||||
homeTab.appendChild(borderlayout);
|
||||
borderlayout.setWidth("100%");
|
||||
borderlayout.setHeight("100%");
|
||||
borderlayout.setStyle("position: absolute");
|
||||
|
||||
East east = new East();
|
||||
borderlayout.appendChild(east);
|
||||
east.appendChild(WPAPanel.get());
|
||||
east.setWidth("205px");
|
||||
|
||||
Center center = new Center();
|
||||
borderlayout.appendChild(center);
|
||||
center.appendChild(hbox);
|
||||
center.setFlex(true);
|
||||
|
||||
//register as 0
|
||||
registerWindow(homeTab);
|
||||
|
@ -252,7 +306,7 @@ public class Desktop extends AbstractUIPart implements MenuListener, Serializabl
|
|||
|
||||
private Box createFavouritesPanel()
|
||||
{
|
||||
Vbox vbox = new Vbox();
|
||||
bxFav = new Vbox();
|
||||
|
||||
int AD_Role_ID = Env.getAD_Role_ID(Env.getCtx());
|
||||
int AD_Tree_ID = DB.getSQLValue(null,
|
||||
|
@ -263,6 +317,8 @@ public class Desktop extends AbstractUIPart implements MenuListener, Serializabl
|
|||
if (AD_Tree_ID <= 0)
|
||||
AD_Tree_ID = 10; // Menu
|
||||
|
||||
m_AD_Tree_ID = AD_Tree_ID;
|
||||
|
||||
MTree vTree = new MTree(Env.getCtx(), AD_Tree_ID, false, true, null);
|
||||
MTreeNode m_root = vTree.getRoot();
|
||||
Enumeration enTop = m_root.children();
|
||||
|
@ -277,13 +333,15 @@ public class Desktop extends AbstractUIPart implements MenuListener, Serializabl
|
|||
String label = nd.toString().trim();
|
||||
ToolBarButton btnFavItem = new ToolBarButton(String.valueOf(nd.getNode_ID()));
|
||||
btnFavItem.setLabel(label);
|
||||
btnFavItem.setDraggable("deleteFav");
|
||||
btnFavItem.addEventListener(Events.ON_CLICK, this);
|
||||
vbox.appendChild(btnFavItem);
|
||||
btnFavItem.addEventListener(Events.ON_DROP, this);
|
||||
bxFav.appendChild(btnFavItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return vbox;
|
||||
return bxFav;
|
||||
}
|
||||
|
||||
private Box createViewPanel()
|
||||
|
@ -506,8 +564,6 @@ public class Desktop extends AbstractUIPart implements MenuListener, Serializabl
|
|||
}
|
||||
else if (actionCommand.equals("InfoSchedule") && AEnv.canAccessInfo("SCHEDULE"))
|
||||
{
|
||||
// TODO: Schedule Info Panel
|
||||
// new org.compiere.apps.search.InfoSchedule (Env.getFrame(c), null, false);
|
||||
new InfoSchedule(null, false);
|
||||
}
|
||||
else if (actionCommand.equals("InfoOrder") && AEnv.canAccessInfo("ORDER"))
|
||||
|
@ -552,6 +608,86 @@ public class Desktop extends AbstractUIPart implements MenuListener, Serializabl
|
|||
if(menuId > 0) onMenuSelected(menuId);
|
||||
}
|
||||
}
|
||||
// Elaine 2008/07/24
|
||||
else if(eventName.equals(Events.ON_DROP))
|
||||
{
|
||||
DropEvent de = (DropEvent) event;
|
||||
Component dragged = de.getDragged();
|
||||
|
||||
if(comp instanceof Groupbox)
|
||||
{
|
||||
if(dragged instanceof Treerow)
|
||||
{
|
||||
Treerow treerow = (Treerow) dragged;
|
||||
Treeitem treeitem = treerow.getTreeitem();
|
||||
|
||||
Object value = treeitem.getValue();
|
||||
if(value != null)
|
||||
{
|
||||
int Node_ID = Integer.valueOf(value.toString());
|
||||
if(barDBupdate(true, Node_ID))
|
||||
{
|
||||
String label = treeitem.getLabel().trim();
|
||||
ToolBarButton btnFavItem = new ToolBarButton(String.valueOf(Node_ID));
|
||||
btnFavItem.setLabel(label);
|
||||
btnFavItem.setDraggable("deleteFav");
|
||||
btnFavItem.addEventListener(Events.ON_CLICK, this);
|
||||
btnFavItem.addEventListener(Events.ON_DROP, this);
|
||||
bxFav.appendChild(btnFavItem);
|
||||
bxFav.invalidate();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(comp instanceof Image)
|
||||
{
|
||||
if(dragged instanceof ToolBarButton)
|
||||
{
|
||||
ToolBarButton btn = (ToolBarButton) dragged;
|
||||
String value = btn.getName();
|
||||
|
||||
if(value != null)
|
||||
{
|
||||
int Node_ID = Integer.valueOf(value.toString());
|
||||
if(barDBupdate(false, Node_ID))
|
||||
{
|
||||
bxFav.removeChild(btn);
|
||||
bxFav.invalidate();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Make Bar add/remove persistent
|
||||
* @param add true if add - otherwise remove
|
||||
* @param Node_ID Node ID
|
||||
* @return true if updated
|
||||
*/
|
||||
private boolean barDBupdate(boolean add, int Node_ID)
|
||||
{
|
||||
int AD_Client_ID = Env.getAD_Client_ID(Env.getCtx());
|
||||
int AD_Org_ID = Env.getContextAsInt(Env.getCtx(), "#AD_Org_ID");
|
||||
int AD_User_ID = Env.getContextAsInt(Env.getCtx(), "#AD_User_ID");
|
||||
StringBuffer sql = new StringBuffer();
|
||||
if (add)
|
||||
sql.append("INSERT INTO AD_TreeBar "
|
||||
+ "(AD_Tree_ID,AD_User_ID,Node_ID, "
|
||||
+ "AD_Client_ID,AD_Org_ID, "
|
||||
+ "IsActive,Created,CreatedBy,Updated,UpdatedBy)VALUES (")
|
||||
.append(m_AD_Tree_ID).append(",").append(AD_User_ID).append(",").append(Node_ID).append(",")
|
||||
.append(AD_Client_ID).append(",").append(AD_Org_ID).append(",")
|
||||
.append("'Y',SysDate,").append(AD_User_ID).append(",SysDate,").append(AD_User_ID).append(")");
|
||||
// if already exist, will result in ORA-00001: unique constraint (ADEMPIERE.AD_TREEBAR_KEY)
|
||||
else
|
||||
sql.append("DELETE AD_TreeBar WHERE AD_Tree_ID=").append(m_AD_Tree_ID)
|
||||
.append(" AND AD_User_ID=").append(AD_User_ID)
|
||||
.append(" AND Node_ID=").append(Node_ID);
|
||||
int no = DB.executeUpdate(sql.toString(), false, null);
|
||||
return no == 1;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
package org.adempiere.webui.apps.graph;
|
||||
|
||||
import java.awt.Color;
|
||||
|
||||
import org.adempiere.webui.component.Grid;
|
||||
import org.adempiere.webui.component.Panel;
|
||||
import org.adempiere.webui.component.Row;
|
||||
|
@ -50,30 +52,25 @@ public class WPAPanel extends Panel implements EventListener
|
|||
*/
|
||||
private void init()
|
||||
{
|
||||
Grid grid = new Grid();
|
||||
appendChild(grid);
|
||||
grid.setStyle("margin:0; padding:0; position: absolute");
|
||||
grid.setSclass("grid-no-striped");
|
||||
grid.setOddRowSclass("even");
|
||||
Grid grid = new Grid();
|
||||
appendChild(grid);
|
||||
grid.setWidth("100%");
|
||||
grid.setStyle("margin:0; padding:0; position: absolute;");
|
||||
grid.setSclass("grid-no-striped");
|
||||
grid.setOddRowSclass("even");
|
||||
|
||||
Rows rows = new Rows();
|
||||
grid.appendChild(rows);
|
||||
Rows rows = new Rows();
|
||||
grid.appendChild(rows);
|
||||
|
||||
Row row = new Row();
|
||||
rows.appendChild(row);
|
||||
row.setWidth("50%, 50%");
|
||||
for (int i = 0; i < m_goals.length; i++)
|
||||
{
|
||||
Row row = new Row();
|
||||
rows.appendChild(row);
|
||||
row.setWidth("100%");
|
||||
|
||||
WPerformanceIndicator pi = new WPerformanceIndicator(m_goals[i]);
|
||||
row.appendChild(pi);
|
||||
pi.addEventListener(Events.ON_CLICK, this);
|
||||
|
||||
if( (i + 1) < m_goals.length && (i + 1) % 2 == 0 )
|
||||
{
|
||||
row = new Row();
|
||||
rows.appendChild(row);
|
||||
row.setWidth("50%, 50%");
|
||||
}
|
||||
}
|
||||
} // init
|
||||
|
||||
|
|
|
@ -47,6 +47,7 @@ public class WPerformanceIndicator extends Panel implements EventListener
|
|||
public WPerformanceIndicator(MGoal goal)
|
||||
{
|
||||
super();
|
||||
|
||||
m_goal = goal;
|
||||
// setName(m_goal.getName());
|
||||
|
||||
|
@ -161,11 +162,13 @@ public class WPerformanceIndicator extends Panel implements EventListener
|
|||
//plot.setDialBackgroundPaint(new GradientPaint(0, 0, m_goal.getColor(), 0, 1000, Color.black));
|
||||
plot.setNeedlePaint(Color.white);
|
||||
plot.setTickSize(2000);
|
||||
plot.setTickLabelFont(new Font("SansSerif", Font.BOLD, 12));
|
||||
plot.setTickLabelFont(new Font("SansSerif", Font.BOLD, 11));
|
||||
plot.setValueFont(new Font("SansSerif", Font.BOLD, 11));
|
||||
plot.setNoDataMessageFont(new Font("SansSerif", Font.BOLD, 11));
|
||||
plot.setTickLabelPaint(Color.white);
|
||||
plot.setInsets(new RectangleInsets(1.0, 2.0, 3.0, 4.0));
|
||||
|
||||
chart = new JFreeChart( m_text, new Font("SansSerif", Font.BOLD, 12), plot,false);
|
||||
chart = new JFreeChart( m_text, new Font("SansSerif", Font.BOLD, 11), plot,false);
|
||||
|
||||
return chart;
|
||||
}
|
||||
|
@ -178,7 +181,7 @@ public class WPerformanceIndicator extends Panel implements EventListener
|
|||
{
|
||||
JFreeChart chart = createChart();
|
||||
|
||||
BufferedImage bi = chart.createBufferedImage(350, 250, BufferedImage.TRANSLUCENT , null);
|
||||
BufferedImage bi = chart.createBufferedImage(200, 120, BufferedImage.TRANSLUCENT , null);
|
||||
try {
|
||||
byte[] bytes = EncoderUtil.encode(bi, ImageFormat.PNG, true);
|
||||
|
||||
|
|
|
@ -173,6 +173,7 @@ public class MenuPanel extends Panel implements EventListener
|
|||
else
|
||||
treeitem.setImage("/images/mWindow.gif");
|
||||
|
||||
treeitem.getTreerow().setDraggable("favourite"); // Elaine 2008/07/24
|
||||
pnlSearch.addTreeItem(treeitem);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue