Package org.w3c.jigadm.editors

Source Code of org.w3c.jigadm.editors.ResourceEditor$Alert

// ResourceEditor.java
// $Id: ResourceEditor.java,v 1.26 2000/08/16 21:37:27 ylafon Exp $
// (c) COPYRIGHT MIT and INRIA, 1997.
// Please first read the full copyright statement in file COPYRIGHT.html

package org.w3c.jigadm.editors;

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.Label;
import java.awt.Panel;
import java.awt.Toolkit;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ComponentEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import java.util.EventObject;
import java.util.Properties;
import java.util.Vector;

import org.w3c.jigadm.PropertyManager;
import org.w3c.jigadm.RemoteResourceWrapper;

import org.w3c.jigadm.events.ResourceChangeEvent;
import org.w3c.jigadm.events.ResourceListener;

import org.w3c.jigsaw.admin.RemoteAccessException;
import org.w3c.jigsaw.admin.RemoteResource;

import org.w3c.tools.widgets.BorderPanel;
import org.w3c.tools.widgets.MessagePopup;

public class ResourceEditor implements ResourceEditorInterface {

    public static final String UNREMOVABLE_P = "unremovable";

    class Alert extends Canvas {

  Image alert = null;
  int width  = 0;
  int height = 0;

  public Dimension getMinimumSize() {
      return new Dimension(width+8, height+8);
  }

  public Dimension getPreferredSize() {
      return new Dimension(width+8, height+8);
  }

  public boolean imageUpdate(Image img, int flaginfo,
           int x, int y, int width, int height) {
      initSize();
      Container parent = getParent();
      if(parent != null)
    parent.doLayout();
      return super.imageUpdate(img, flaginfo, x, y, width, height);
  }

  private void initSize() {
      if (alert != null) {
    width = alert.getWidth(this);
    height = alert.getHeight(this);
      }
  }

  public void paint(Graphics g) {
      if (alert != null)
    g.drawImage(alert, 0, 0, this);
  }

  Alert() {
      PropertyManager pm = PropertyManager.getPropertyManager();
      String alertPath = pm.getIconLocation("alert");
      if (alertPath != null) {
    alert = Toolkit.getDefaultToolkit().getImage(alertPath);
    prepareImage(alert,this);
      }
      initSize();
  }
    }

    class ButtonBarListener implements ActionListener {

   class Switcher extends Thread {
      Button b;

            public void run() {
    try {
        switchHelper(b);
       } catch (RemoteAccessException ex) {
        // do fancy things FIXME
    }
      }
     
      Switcher(Button b) {
    this.b = b;
      }
  }

        class Deleter extends Thread {
            public void run() {
    delete();
      }
  }

        class Reindexer extends Thread {
            public void run() {
    reindex();
      }
  }

        public void actionPerformed(ActionEvent ae) {
      if (ae.getActionCommand().equals(DELETE_L)) {
    (new Deleter()).start();
      } else if(ae.getActionCommand().equals(REINDEX_L)) {
    setMessage("Reindexation started...");
    (new Reindexer()).start();
    setMessage("Reindexation done.");
      } else {
    (new Switcher((Button)ae.getSource())).start();
      }
  }
    }

    class MouseButtonListener extends MouseAdapter {

  public void mouseEntered(MouseEvent e) {
      Component comp = e.getComponent();
      if (comp instanceof Button) {
    String action = ((Button)comp).getActionCommand();
    if (action.equals(DELETE_L)) {
        setMessage("Delete this resource!");
    } else if (action.equals(REINDEX_L)) {
        setMessage("Reindex the children.");
    }
      }
  }

  public void mouseExited(MouseEvent e) {
      setMessage("");
  }
    }

    protected Vector rls = null;

    Panel target = null;
    Panel buttonp = null;
    Panel editorp = null;
    Button commitb = null;
    Button resetb;
    RemoteResource rr = null;
    RemoteResourceWrapper rrw = null;
    ResourceHelper rh[] = null;
    protected Button b[] = null;
    protected Label message = null;
    Properties p;

    protected static final String DELETE_L  = "Delete";
    protected static final String REINDEX_L = "Reindex";

    public void setMessage(String msg) {
  message.setText(msg);
    }

    public void commitChanges()
  throws RemoteAccessException
    {
  boolean authorized;
  for(int i=0; i<rh.length; i++) {
      if(rh[i].hasChanged()) {
    authorized = false;
    while (!authorized) {
        try {
      authorized = true;
      rh[i].commitChanges();
        } catch (RemoteAccessException ex) {
      if( ex.getMessage().equals("Unauthorized")) {
          authorized = false;
      } else {
          (new MessagePopup("Exception : ",
                ex.getMessage())).show();
          throw ex; // another reason, throw it
      }
        } finally {
      if(!authorized) {
          rrw.getBrowser().popupDialog("admin");
      }
        }
    }
      }
  }
    }

    public void resetChanges()
  throws RemoteAccessException
    {
  for(int i=0; i<rh.length; i++) {
      if(rh[i].hasChanged()) {
    rh[i].resetChanges();
      }
  }
    }

    protected void switchHelper(Button toggled)
  throws RemoteAccessException
    {
  for(int i=0; i< b.length; i++) {
      boolean authorized;
      if( toggled.equals(b[i])) {
          PropertyManager pm = PropertyManager.getPropertyManager();
    Properties props =
        pm.getHelperProperties(rrw, rh[i].getClass().getName());
    authorized = false;
    while (!authorized) {
        try {
      authorized = true;
      rh[i].initialize(rrw, props);
        } catch (RemoteAccessException ex) {
      if( ex.getMessage().equals("Unauthorized")) {
          authorized = false;
      } else {
          (new MessagePopup("Exception : ",
                ex.getMessage())).show();
          throw ex; // another reason, throw it
      }
        } finally {
      if(!authorized) {
          rrw.getBrowser().popupDialog("admin");
      }
        }
    }
    editorp.setVisible(false);
    editorp.removeAll();
    editorp.add("Center", rh[i].getComponent());
    editorp.validate();
    editorp.setVisible(true);
      }
  }
    }

    protected void reindex() {
  boolean authorized = false;
  while (!authorized) {
      try {
    authorized = true;
    rrw.getResource().reindex(true);
      } catch (RemoteAccessException ex) {
    if( ex.getMessage().equals("Unauthorized")) {
        authorized = false;
    } else {
        (new MessagePopup("Exception : ",
              ex.getMessage())).show();
        // must throw a fancy error
    }
      } finally {
    if(!authorized) {
        rrw.getBrowser().popupDialog("admin");
    }
      }
  }
    }

    protected void delete() {
  boolean authorized = false;
  while (!authorized) {
      try {
    authorized = true;
    rrw.getResource().delete();
      } catch (RemoteAccessException ex) {
    if( ex.getMessage().equals("Unauthorized")) {
        authorized = false;
    } else {
        (new MessagePopup("Exception : ",
              ex.getMessage())).show();
        // must throw a fancy error
    }
      } finally {
    if(!authorized) {
        rrw.getBrowser().popupDialog("admin");
    }
      }
  }
  processEvent(new ResourceChangeEvent(rrw.getFatherWrapper(),
               "deleted", rrw, null));
    }

    public boolean hasChanged() {
  for(int i=0; i<rh.length; i++) {
      if(rh[i].hasChanged()) {
    return true;
      }
  }
  return false;
    }

    public void clearChanged() {
  for(int i=0; i<rh.length; i++) {
      if(rh[i].hasChanged()) {
    rh[i].clearChanged();
      }
  }
    }

    public RemoteResource getValue() {
  return rr;
    }

    public synchronized void addResourceListener(ResourceListener rl) {
  if (rls == null)
      rls = new Vector(2);
  rls.addElement(rl);
    }

    public synchronized void removeResourceListener(ResourceListener rl) {
  if ( rls != null )
      rls.removeElement(rl);
    }

    protected void processEvent(EventObject eo) {
  Vector rls = null;
  ResourceListener rl;
  synchronized(this) {
      if((this.rls != null) && (eo instanceof ResourceChangeEvent )) {
    rls = (Vector) this.rls.clone();
      } else {
    return;
      }
  }
  for(int i=0; i<rls.size(); i++) {
      rl = (ResourceListener) rls.elementAt(i);
      rl.resourceChanged((ResourceChangeEvent)eo);
  }
    }

    /**
     * initialize this editor
     * @param rrw The RemoteResourceWrapper
     * @param pr The properties
     * @exception RemoteAccessException if a remote access error occurs.
     */
    public void initialize(RemoteResourceWrapper rrw, Properties p)
  throws RemoteAccessException
    {
  int num = 0;
  this.rrw = rrw;
  rr = rrw.getResource();
  ButtonBarListener bbl = new ButtonBarListener();
  this.p = p;
  target.removeAll();
  BorderPanel ptarget = new BorderPanel(BorderPanel.OUT, 2);
  ptarget.setLayout(new BorderLayout());
  rh = ResourceHelperFactory.getHelpers(rrw);

  PropertyManager pm = PropertyManager.getPropertyManager();
  Properties props = pm.getEditorProperties(rrw);
  if ((props == null) ||
      (props.getProperty(UNREMOVABLE_P,
             "false").equalsIgnoreCase("false")))
      {
    MouseButtonListener mbl = new MouseButtonListener();
    Panel pan = new Panel(new BorderLayout());
    Button deleteb = new Button(DELETE_L);
    deleteb.addActionListener(bbl);
    deleteb.addMouseListener(mbl);
    pan.add("West", deleteb);
   
    message = new Label("", Label.CENTER);
    message.setBackground(Color.gray);
    message.setForeground(Color.white);

    BorderPanel pmsg = new BorderPanel(BorderPanel.IN, 2);
    pmsg.setLayout(new BorderLayout());
    pmsg.add(message);
    pan.add("Center", pmsg);

    if (rr.isDirectoryResource()) {
        Button reindexb = new Button(REINDEX_L);
        reindexb.addActionListener(bbl);
        reindexb.addMouseListener(mbl);
        pan.add("East", reindexb);
    }
    //target.setVisible(false);
    ptarget.add("South", pan);
      }
  if(rh != null) {
      //buttonp = new Panel(new GridLayout(1, rh.length+1));
      buttonp = new BorderPanel(BorderPanel.OUT, 1);
      buttonp.setLayout(new GridLayout(1, rh.length+1));
      b = new Button[rh.length];
      for(int i=0; i<rh.length; i++) {
    b[i] = new Button(rh[i].getTitle());
    buttonp.add(b[i]);
    b[i].addActionListener(bbl);
    if (rh[i].getTitle().equalsIgnoreCase("shortcut"))
        num = i;
      }
      editorp = new Panel(new BorderLayout());
      //target.setVisible(false);
      ptarget.add("North", buttonp);
      ptarget.add("Center", editorp);
      target.add("Center", ptarget);
      target.validate();
      target.setVisible(true);
      switchHelper(b[num]);
  } else {
      target.add("Center", ptarget);
      target.validate();
      target.setVisible(true);
  }
    }

    public ResourceEditor(Panel p) {
  target = p;
    }
}

TOP

Related Classes of org.w3c.jigadm.editors.ResourceEditor$Alert

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.