Package org.apache.felix.mosgi.console.component

Source Code of org.apache.felix.mosgi.console.component.JtreeCellRenderer

/*
*   Copyright 2005 The Apache Software Foundation
*
*   Licensed 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.felix.mosgi.console.component;

import org.osgi.framework.BundleContext;
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import java.awt.Dimension;
import java.awt.Toolkit;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.JTree;
import javax.swing.ImageIcon;
import javax.swing.tree.DefaultTreeCellRenderer;
import java.util.StringTokenizer;
import java.lang.StringBuffer;
import java.util.Hashtable;

public class JtreeCellRenderer extends DefaultTreeCellRenderer {

  public static final String UNKNOWN_DATE="??/??/??";
  public static final String UNKNOWN_TIME="??:??:??:???";
  public static Hashtable ht_num2string=new Hashtable();

  private boolean isLeaf=false;
  private RemoteLogger_jtree rl_jtree=null;
  private static final Font FONT_BIG=new Font("Monospaced",Font.BOLD,14);
  private static final Font FONT_SMALL=new Font("Monospaced",Font.PLAIN,10);

  private static Hashtable ht_string2color=new Hashtable();
  private static Hashtable ht_string2icon=new Hashtable();
  private static ImageIcon iiOldLog=null;
  private static ImageIcon iiNewLog=null;
  private static ImageIcon iiNull=null;
 
  public JtreeCellRenderer(BundleContext bdlCtx, RemoteLogger_jtree rl_jtree) {
    this.rl_jtree=rl_jtree;
   
    String[] states=new String[] {
      "Uninstalled",
      "Installed  ",
      "Resolved   ",
      "Starting   ",
      "Stopping   ",
      "Active     "
    };

    Color[] colors=new Color[] {
      Color.black,
      Color.red,
      Color.orange,
      Color.gray,
      Color.gray,
      Color.green
    };
   
    this.iiOldLog=new ImageIcon(Toolkit.getDefaultToolkit().getImage(bdlCtx.getBundle().getResource("icons/OLDLOG.gif")));
    this.iiNewLog=new ImageIcon(Toolkit.getDefaultToolkit().getImage(bdlCtx.getBundle().getResource("icons/NEWLOG.gif")));
    this.iiNull=new ImageIcon(Toolkit.getDefaultToolkit().getImage(bdlCtx.getBundle().getResource("icons/NULL.gif")));
   
    for (int i=0 ; i<states.length ; i++) {
      ht_num2string.put(new Integer((int) Math.pow(2, i)), states[i]);
      ht_string2color.put(states[i].trim(), colors[i]);
      ht_string2icon.put(states[i].trim(), new ImageIcon(Toolkit.getDefaultToolkit().getImage(bdlCtx.getBundle().getResource("icons/"+states[i].trim()+".gif"))));
    }

  }

  public Dimension getPreferredSize() {
    Dimension dim = super.getPreferredSize();
    return (isLeaf)?dim:new Dimension(800,dim.height);
  }

  public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) {
    this.isLeaf=leaf;
    //super.getTreeCellRendererComponent(tree,value,sel,expanded,leaf,row,hasFocus);
    setText(value.toString());
    setOpaque(true);
    setBackground(Color.white);
    setFont(FONT_BIG);
    setToolTipText(null);
    StringTokenizer st=null;
    DefaultMutableTreeNode dmtn=(DefaultMutableTreeNode)value;

    if (rl_jtree.v_ul.contains(dmtn)) {
      setIcon(iiNewLog);
    } else {
      setIcon(iiNull);
    }

    int lvl=dmtn.getLevel();
    switch (lvl) {
      case 2: { // port / profilName / logLvl
        setText(value+" (log level="+rl_jtree.getLogLvl(dmtn)+")");
  break;
      }
      case 3: { // bundleId / symbolic name / children count
        st=new StringTokenizer(dmtn.getFirstChild().toString(),"|");
        if(st!=null) { 
          String date=st.nextToken().trim();
          st.nextToken();
          String state=st.nextToken().trim();
    setBackground((Color) ht_string2color.get(state));
    StringTokenizer st2 = new StringTokenizer(((DefaultMutableTreeNode)dmtn.getFirstChild()).toString()," | ");
    StringBuffer ttt=new StringBuffer(
      "<html><B>IP = </B>"+/*IP=<ip> Profil=<port>/<profil>*/dmtn.getParent().getParent()+"<B> Profil =</B>"+dmtn.getParent()+
      "<br><B>Bundle : </B>"+/*Bundle : Id=<bundleId> : <bundleSymbolicName>*/dmtn+
      "<br><B>Date : </B>"+/*<date> - <time>*/st2.nextToken()+" - "+st2.nextToken()+
      "<br><B>State on last log : "+/*<bundleState>*/st2.nextToken()+
        "<br>Event "+/*Event <eventNumber> : <logLevel> : <message>*/dmtn.getChildCount()+" : "+st2.nextToken()+" : </B><br>");
    while (st2.hasMoreTokens()) {
      ttt.append(st2.nextToken()+" ");
    }
    setToolTipText(ttt+"</html>");
  }
        break;
      }
      case 4: { // icon / date / time / state / logLvl / msg
        st=new StringTokenizer(dmtn.toString(),"|");
  setFont(FONT_SMALL);
        if(st!=null){
          String time=st.nextToken().trim();
          st.nextToken();
    String state=st.nextToken().trim();
    ImageIcon ii=(ImageIcon) ht_string2icon.get(state);
    if (time.equals(UNKNOWN_TIME)) {
      ii=iiOldLog;
    }
    setIcon(ii);
  }
      break;
      }

    } 
    return this;
 

}

  /*
    // Introspection technique :
    java.lang.Class class_bundle=org.osgi.framework.Bundle.class;
    java.lang.reflect.Field[] fields=class_bundle.getFields();
    for (int i=0 ; i<fields.length ; i++) {
  try {
    String name=fields[i].getName();
    int value=fields[i].getInt(null);
    System.out.println("Cst # "+i+" \""+name+"\" = "+value);
  }catch (Exception oups) {
    oups.printStackTrace();
  }
  }
  */ 
TOP

Related Classes of org.apache.felix.mosgi.console.component.JtreeCellRenderer

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.