// Copyright (c) 2009 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

package org.chromium.debug.core.model;

import org.chromium.debug.core.ChromiumDebugPlugin;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IAdapterFactory;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.ui.model.IWorkbenchAdapter;

/**
 * An IWorkbenchAdapter factory for ChromiumLineBreakpoints.
 */
public class ChromiumBreakpointWBAFactory implements IAdapterFactory {

  protected static final Object[] EMPTY_CHILDREN = new Object[0];

  @SuppressWarnings("unchecked")
  public Object getAdapter(Object adaptableObject, Class adapterType) {
    if (adapterType != IWorkbenchAdapter.class ||
        !(adaptableObject instanceof ChromiumLineBreakpoint)) {
      return null;
    }
    return new IWorkbenchAdapter() {

      public Object[] getChildren(Object o) {
        return EMPTY_CHILDREN;
      }

      public ImageDescriptor getImageDescriptor(Object object) {
        return null;
      }

      public String getLabel(Object o) {
        ChromiumLineBreakpoint bp = (ChromiumLineBreakpoint) o;
        try {
          return bp.getMarker().getAttribute(IMarker.MESSAGE).toString();
        } catch (CoreException e) {
          ChromiumDebugPlugin.log(e);
        }
        return null;
      }

      public Object getParent(Object o) {
        return null;
      }
    };
  }

  @SuppressWarnings("unchecked")
  public Class[] getAdapterList() {
    return new Class[] { IWorkbenchAdapter.class };
  }

}
