org.eclipse.debug.ui_3.8.2.v20130130-171415

16:42:51.697 INFO  jd.cli.Main - Decompiling org.eclipse.debug.ui_3.8.2.v20130130-171415.jar
package org.eclipse.debug.internal.ui;

import org.eclipse.jface.viewers.CheckboxTableViewer;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Button;

class AbstractDebugCheckboxSelectionDialog$1
  extends SelectionAdapter
{
  final AbstractDebugCheckboxSelectionDialog this$0;
  
  AbstractDebugCheckboxSelectionDialog$1(AbstractDebugCheckboxSelectionDialog paramAbstractDebugCheckboxSelectionDialog)
  {
    this$0 = paramAbstractDebugCheckboxSelectionDialog;
  }
  
  public void widgetSelected(SelectionEvent e)
  {
    this$0.getCheckBoxTableViewer().setAllChecked(true);
    AbstractDebugCheckboxSelectionDialog.access$0(this$0, 0).setEnabled(this$0.isValid());
  }
}

/* Location:
 * Qualified Name:     org.eclipse.debug.internal.ui.AbstractDebugCheckboxSelectionDialog.1
 * Java Class Version: 1.2 (46.0)
 * JD-Core Version:    0.7.1
 */
package org.eclipse.debug.internal.ui;

import org.eclipse.jface.viewers.CheckboxTableViewer;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Button;

class AbstractDebugCheckboxSelectionDialog$2
  extends SelectionAdapter
{
  final AbstractDebugCheckboxSelectionDialog this$0;
  
  AbstractDebugCheckboxSelectionDialog$2(AbstractDebugCheckboxSelectionDialog paramAbstractDebugCheckboxSelectionDialog)
  {
    this$0 = paramAbstractDebugCheckboxSelectionDialog;
  }
  
  public void widgetSelected(SelectionEvent e)
  {
    this$0.getCheckBoxTableViewer().setAllChecked(false);
    AbstractDebugCheckboxSelectionDialog.access$0(this$0, 0).setEnabled(this$0.isValid());
  }
}

/* Location:
 * Qualified Name:     org.eclipse.debug.internal.ui.AbstractDebugCheckboxSelectionDialog.2
 * Java Class Version: 1.2 (46.0)
 * JD-Core Version:    0.7.1
 */
package org.eclipse.debug.internal.ui;

import org.eclipse.jface.viewers.CheckStateChangedEvent;
import org.eclipse.jface.viewers.ICheckStateListener;
import org.eclipse.swt.widgets.Button;

class AbstractDebugCheckboxSelectionDialog$DefaultCheckboxListener
  implements ICheckStateListener
{
  final AbstractDebugCheckboxSelectionDialog this$0;
  
  private AbstractDebugCheckboxSelectionDialog$DefaultCheckboxListener(AbstractDebugCheckboxSelectionDialog paramAbstractDebugCheckboxSelectionDialog)
  {
    this$0 = paramAbstractDebugCheckboxSelectionDialog;
  }
  
  AbstractDebugCheckboxSelectionDialog$DefaultCheckboxListener(AbstractDebugCheckboxSelectionDialog paramAbstractDebugCheckboxSelectionDialog, DefaultCheckboxListener paramDefaultCheckboxListener)
  {
    this(paramAbstractDebugCheckboxSelectionDialog);
  }
  
  public void checkStateChanged(CheckStateChangedEvent event)
  {
    AbstractDebugCheckboxSelectionDialog.access$0(this$0, 0).setEnabled(this$0.isValid());
  }
}

/* Location:
 * Qualified Name:     org.eclipse.debug.internal.ui.AbstractDebugCheckboxSelectionDialog.DefaultCheckboxListener
 * Java Class Version: 1.2 (46.0)
 * JD-Core Version:    0.7.1
 */
package org.eclipse.debug.internal.ui;

import java.util.Arrays;
import java.util.List;
import org.eclipse.jface.viewers.CheckStateChangedEvent;
import org.eclipse.jface.viewers.CheckboxTableViewer;
import org.eclipse.jface.viewers.ICheckStateListener;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.StructuredViewer;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;

public abstract class AbstractDebugCheckboxSelectionDialog
  extends AbstractDebugSelectionDialog
{
  private boolean fShowSelectButtons = false;
  
  public AbstractDebugCheckboxSelectionDialog(Shell parentShell)
  {
    super(parentShell);
    setShellStyle(getShellStyle() | 0x10);
  }
  
  protected CheckboxTableViewer getCheckBoxTableViewer()
  {
    return (CheckboxTableViewer)fViewer;
  }
  
  protected void initializeControls()
  {
    List selectedElements = getInitialElementSelections();
    if ((selectedElements != null) && (!selectedElements.isEmpty()))
    {
      getCheckBoxTableViewer().setCheckedElements(selectedElements.toArray());
      getCheckBoxTableViewer().setSelection(StructuredSelection.EMPTY);
    }
    super.initializeControls();
  }
  
  protected StructuredViewer createViewer(Composite parent)
  {
    Table table = new Table(parent, 2084);
    GridData gd = new GridData(1808);
    heightHint = 150;
    widthHint = 250;
    table.setLayoutData(gd);
    return new CheckboxTableViewer(table);
  }
  
  protected void addViewerListeners(StructuredViewer viewer)
  {
    getCheckBoxTableViewer().addCheckStateListener(new DefaultCheckboxListener(null));
  }
  
  private class DefaultCheckboxListener
    implements ICheckStateListener
  {
    DefaultCheckboxListener(DefaultCheckboxListener paramDefaultCheckboxListener)
    {
      this();
    }
    
    public void checkStateChanged(CheckStateChangedEvent event)
    {
      getButton(0).setEnabled(isValid());
    }
    
    private DefaultCheckboxListener() {}
  }
  
  protected boolean isValid()
  {
    return getCheckBoxTableViewer().getCheckedElements().length > 0;
  }
  
  protected void okPressed()
  {
    Object[] elements = getCheckBoxTableViewer().getCheckedElements();
    setResult(Arrays.asList(elements));
    super.okPressed();
  }
  
  protected void addCustomFooterControls(Composite parent)
  {
    if (fShowSelectButtons)
    {
      Composite comp = SWTFactory.createComposite(parent, 2, 1, 768);
      GridData gd = (GridData)comp.getLayoutData();
      horizontalAlignment = 16777224;
      Button button = SWTFactory.createPushButton(comp, DebugUIMessages.AbstractDebugCheckboxSelectionDialog_0, null);
      button.addSelectionListener(new SelectionAdapter()
      {
        public void widgetSelected(SelectionEvent e)
        {
          getCheckBoxTableViewer().setAllChecked(true);
          getButton(0).setEnabled(isValid());
        }
      });
      button = SWTFactory.createPushButton(comp, DebugUIMessages.AbstractDebugCheckboxSelectionDialog_1, null);
      button.addSelectionListener(new SelectionAdapter()
      {
        public void widgetSelected(SelectionEvent e)
        {
          getCheckBoxTableViewer().setAllChecked(false);
          getButton(0).setEnabled(isValid());
        }
      });
    }
  }
  
  protected void setShowSelectAllButtons(boolean setting)
  {
    fShowSelectButtons = setting;
  }
}

/* Location:
 * Qualified Name:     org.eclipse.debug.internal.ui.AbstractDebugCheckboxSelectionDialog
 * Java Class Version: 1.2 (46.0)
 * JD-Core Version:    0.7.1
 */
package org.eclipse.debug.internal.ui;

import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.swt.widgets.Button;

class AbstractDebugListSelectionDialog$1
  implements ISelectionChangedListener
{
  final AbstractDebugListSelectionDialog this$0;
  
  AbstractDebugListSelectionDialog$1(AbstractDebugListSelectionDialog paramAbstractDebugListSelectionDialog)
  {
    this$0 = paramAbstractDebugListSelectionDialog;
  }
  
  public void selectionChanged(SelectionChangedEvent event)
  {
    AbstractDebugListSelectionDialog.access$0(this$0, 0).setEnabled(this$0.isValid());
  }
}

/* Location:
 * Qualified Name:     org.eclipse.debug.internal.ui.AbstractDebugListSelectionDialog.1
 * Java Class Version: 1.2 (46.0)
 * JD-Core Version:    0.7.1
 */
package org.eclipse.debug.internal.ui;

import org.eclipse.jface.viewers.DoubleClickEvent;
import org.eclipse.jface.viewers.IDoubleClickListener;

class AbstractDebugListSelectionDialog$2
  implements IDoubleClickListener
{
  final AbstractDebugListSelectionDialog this$0;
  
  AbstractDebugListSelectionDialog$2(AbstractDebugListSelectionDialog paramAbstractDebugListSelectionDialog)
  {
    this$0 = paramAbstractDebugListSelectionDialog;
  }
  
  public void doubleClick(DoubleClickEvent event)
  {
    if (this$0.isValid()) {
      this$0.okPressed();
    }
  }
}

/* Location:
 * Qualified Name:     org.eclipse.debug.internal.ui.AbstractDebugListSelectionDialog.2
 * Java Class Version: 1.2 (46.0)
 * JD-Core Version:    0.7.1
 */
package org.eclipse.debug.internal.ui;

import org.eclipse.jface.viewers.DoubleClickEvent;
import org.eclipse.jface.viewers.IDoubleClickListener;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredViewer;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;

public abstract class AbstractDebugListSelectionDialog
  extends AbstractDebugSelectionDialog
{
  protected TableViewer fListViewer;
  
  public AbstractDebugListSelectionDialog(Shell parentShell)
  {
    super(parentShell);
    setShellStyle(getShellStyle() | 0x10);
  }
  
  protected StructuredViewer createViewer(Composite parent)
  {
    fListViewer = new TableViewer(parent, 2820);
    GridData gd = new GridData(1808);
    heightHint = 150;
    fListViewer.getTable().setLayoutData(gd);
    return fListViewer;
  }
  
  protected void addViewerListeners(StructuredViewer viewer)
  {
    viewer.addSelectionChangedListener(new ISelectionChangedListener()
    {
      public void selectionChanged(SelectionChangedEvent event)
      {
        getButton(0).setEnabled(isValid());
      }
    });
    viewer.addDoubleClickListener(new IDoubleClickListener()
    {
      public void doubleClick(DoubleClickEvent event)
      {
        if (isValid()) {
          okPressed();
        }
      }
    });
  }
  
  protected boolean isValid()
  {
    if (fListViewer != null)
    {
      ISelection sel = fListViewer.getSelection();
      if ((sel instanceof IStructuredSelection)) {
        return ((IStructuredSelection)sel).size() == 1;
      }
    }
    return false;
  }
  
  protected void okPressed()
  {
    ISelection selection = fViewer.getSelection();
    if ((selection instanceof IStructuredSelection)) {
      setResult(((IStructuredSelection)selection).toList());
    }
    super.okPressed();
  }
}

/* Location:
 * Qualified Name:     org.eclipse.debug.internal.ui.AbstractDebugListSelectionDialog
 * Java Class Version: 1.2 (46.0)
 * JD-Core Version:    0.7.1
 */
package org.eclipse.debug.internal.ui;

import java.util.List;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.IBaseLabelProvider;
import org.eclipse.jface.viewers.IContentProvider;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.StructuredViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.dialogs.SelectionDialog;
import org.eclipse.ui.help.IWorkbenchHelpSystem;

public abstract class AbstractDebugSelectionDialog
  extends SelectionDialog
{
  protected StructuredViewer fViewer = null;
  
  public AbstractDebugSelectionDialog(Shell parentShell)
  {
    super(parentShell);
    setDialogBoundsSettings(getDialogBoundsSettings(), 2);
  }
  
  protected abstract String getDialogSettingsId();
  
  protected abstract Object getViewerInput();
  
  protected abstract StructuredViewer createViewer(Composite paramComposite);
  
  protected abstract boolean isValid();
  
  protected IContentProvider getContentProvider()
  {
    return new ArrayContentProvider();
  }
  
  protected IBaseLabelProvider getLabelProvider()
  {
    return new DefaultLabelProvider();
  }
  
  protected abstract String getHelpContextId();
  
  protected void addViewerListeners(StructuredViewer viewer) {}
  
  protected void addCustomHeaderControls(Composite parent) {}
  
  protected void addCustomFooterControls(Composite parent) {}
  
  protected void initializeControls()
  {
    getButton(0).setEnabled(isValid());
  }
  
  protected Viewer getViewer()
  {
    return fViewer;
  }
  
  protected Control createContents(Composite parent)
  {
    Composite comp = (Composite)super.createContents(parent);
    initializeControls();
    return comp;
  }
  
  protected Control createDialogArea(Composite parent)
  {
    initializeDialogUnits(parent);
    Composite comp = (Composite)super.createDialogArea(parent);
    addCustomHeaderControls(comp);
    String label = getMessage();
    if ((label != null) && (!"".equals(label))) {
      SWTFactory.createWrapLabel(comp, label, 1);
    }
    label = getViewerLabel();
    if ((label != null) && (!"".equals(label))) {
      SWTFactory.createLabel(comp, label, 1);
    }
    fViewer = createViewer(comp);
    fViewer.setLabelProvider(getLabelProvider());
    fViewer.setContentProvider(getContentProvider());
    fViewer.setInput(getViewerInput());
    List selectedElements = getInitialElementSelections();
    if ((selectedElements != null) && (!selectedElements.isEmpty())) {
      fViewer.setSelection(new StructuredSelection(selectedElements));
    }
    addViewerListeners(fViewer);
    addCustomFooterControls(comp);
    Dialog.applyDialogFont(comp);
    String help = getHelpContextId();
    if (help != null) {
      PlatformUI.getWorkbench().getHelpSystem().setHelp(comp, help);
    }
    return comp;
  }
  
  protected abstract String getViewerLabel();
  
  protected IDialogSettings getDialogBoundsSettings()
  {
    IDialogSettings settings = DebugUIPlugin.getDefault().getDialogSettings();
    IDialogSettings section = settings.getSection(getDialogSettingsId());
    if (section == null) {
      section = settings.addNewSection(getDialogSettingsId());
    }
    return section;
  }
}

/* Location:
 * Qualified Name:     org.eclipse.debug.internal.ui.AbstractDebugSelectionDialog
 * Java Class Version: 1.2 (46.0)
 * JD-Core Version:    0.7.1
 */
package org.eclipse.debug.internal.ui;

import org.eclipse.core.resources.IMarker;
import org.eclipse.debug.core.DebugPlugin;
import org.eclipse.debug.core.IBreakpointManager;
import org.eclipse.debug.core.model.IBreakpoint;
import org.eclipse.debug.ui.IDebugModelPresentation;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.text.source.Annotation;
import org.eclipse.swt.graphics.Image;
import org.eclipse.ui.texteditor.IAnnotationImageProvider;
import org.eclipse.ui.texteditor.MarkerAnnotation;

public class BreakpointImageProvider
  implements IAnnotationImageProvider
{
  public Image getManagedImage(Annotation annotation)
  {
    if ((annotation instanceof MarkerAnnotation))
    {
      IMarker marker = ((MarkerAnnotation)annotation).getMarker();
      if (marker != null)
      {
        IBreakpoint breakpoint = DebugPlugin.getDefault().getBreakpointManager().getBreakpoint(marker);
        if (breakpoint != null) {
          return DebugUIPlugin.getModelPresentation().getImage(breakpoint);
        }
      }
    }
    return null;
  }
  
  public String getImageDescriptorId(Annotation annotation)
  {
    return null;
  }
  
  public ImageDescriptor getImageDescriptor(String imageDescritporId)
  {
    return null;
  }
}

/* Location:
 * Qualified Name:     org.eclipse.debug.internal.ui.BreakpointImageProvider
 * Java Class Version: 1.2 (46.0)
 * JD-Core Version:    0.7.1
 */
package org.eclipse.debug.internal.ui;

import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.RGB;
import org.eclipse.swt.widgets.Display;

public class ColorManager
{
  private static ColorManager fgColorManager;
  
  public static ColorManager getDefault()
  {
    if (fgColorManager == null) {
      fgColorManager = new ColorManager();
    }
    return fgColorManager;
  }
  
  protected Map fColorTable = new HashMap(10);
  
  public Color getColor(RGB rgb)
  {
    Color color = (Color)fColorTable.get(rgb);
    if (color == null)
    {
      color = new Color(Display.getCurrent(), rgb);
      fColorTable.put(rgb, color);
    }
    return color;
  }
  
  public void dispose()
  {
    Iterator e = fColorTable.values().iterator();
    while (e.hasNext()) {
      ((Color)e.next()).dispose();
    }
  }
}

/* Location:
 * Qualified Name:     org.eclipse.debug.internal.ui.ColorManager
 * Java Class Version: 1.2 (46.0)
 * JD-Core Version:    0.7.1
 */
package org.eclipse.debug.internal.ui;

import org.eclipse.debug.ui.DebugUITools;
import org.eclipse.jface.resource.CompositeImageDescriptor;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.ImageData;
import org.eclipse.swt.graphics.Point;

public class CompositeDebugImageDescriptor
  extends CompositeImageDescriptor
{
  public static final int SKIP_BREAKPOINT = 1;
  private Image fBaseImage;
  private int fFlags;
  private Point fSize;
  
  public CompositeDebugImageDescriptor(Image baseImage, int flags)
  {
    setBaseImage(baseImage);
    setFlags(flags);
  }
  
  protected Point getSize()
  {
    if (fSize == null)
    {
      ImageData data = getBaseImage().getImageData();
      setSize(new Point(width, height));
    }
    return fSize;
  }
  
  public boolean equals(Object object)
  {
    if (!(object instanceof CompositeDebugImageDescriptor)) {
      return false;
    }
    CompositeDebugImageDescriptor other = (CompositeDebugImageDescriptor)object;
    return (getBaseImage().equals(other.getBaseImage())) && (getFlags() == other.getFlags());
  }
  
  public int hashCode()
  {
    return getBaseImage().hashCode() | getFlags();
  }
  
  protected void drawCompositeImage(int width, int height)
  {
    ImageData bg = getBaseImage().getImageData();
    if (bg == null) {
      bg = DEFAULT_IMAGE_DATA;
    }
    drawImage(bg, 0, 0);
    drawOverlays();
  }
  
  protected void drawOverlays()
  {
    int flags = getFlags();
    int x = 0;
    int y = 0;
    ImageData data = null;
    if ((flags & 0x1) != 0)
    {
      x = 0;
      y = 0;
      data = DebugUITools.getImage("IMG_OVR_SKIP_BREAKPOINT").getImageData();
      drawImage(data, x, y);
    }
  }
  
  protected Image getBaseImage()
  {
    return fBaseImage;
  }
  
  protected void setBaseImage(Image image)
  {
    fBaseImage = image;
  }
  
  protected int getFlags()
  {
    return fFlags;
  }
  
  protected void setFlags(int flags)
  {
    fFlags = flags;
  }
  
  protected void setSize(Point size)
  {
    fSize = size;
  }
}

/* Location:
 * Qualified Name:     org.eclipse.debug.internal.ui.CompositeDebugImageDescriptor
 * Java Class Version: 1.2 (46.0)
 * JD-Core Version:    0.7.1
 */
package org.eclipse.debug.internal.ui;

import org.eclipse.core.expressions.PropertyTester;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IAdapterManager;
import org.eclipse.core.runtime.Platform;
import org.eclipse.debug.core.model.IDebugElement;
import org.eclipse.debug.core.model.IDebugModelProvider;
import org.eclipse.debug.core.model.IDebugTarget;
import org.eclipse.debug.core.model.IDisconnect;
import org.eclipse.debug.core.model.IProcess;
import org.eclipse.debug.core.model.ITerminate;

public class DebugModelPropertyTester
  extends PropertyTester
{
  public static final String MODEL_TYPE_PROPERTY = "getModelIdentifier";
  public static final String IS_TERMINATED_OR_DISCONNECTED_PROPERTY = "isTerminatedOrDisconnected";
  
  public boolean test(Object receiver, String property, Object[] args, Object expectedValue)
  {
    if ("getModelIdentifier".equals(property))
    {
      IDebugTarget target = null;
      if ((receiver instanceof IProcess)) {
        target = (IDebugTarget)((IProcess)receiver).getAdapter(IDebugTarget.class);
      } else if ((receiver instanceof IDebugElement)) {
        target = (IDebugTarget)((IDebugElement)receiver).getAdapter(IDebugTarget.class);
      }
      if (target != null)
      {
        if ((expectedValue == null) || (expectedValue.equals(""))) {
          return false;
        }
        if (expectedValue.equals(target.getModelIdentifier())) {
          return true;
        }
      }
      IDebugModelProvider modelProvider = null;
      if ((receiver instanceof IAdaptable)) {
        modelProvider = (IDebugModelProvider)((IAdaptable)receiver).getAdapter(IDebugModelProvider.class);
      } else {
        modelProvider = 
          (IDebugModelProvider)Platform.getAdapterManager()
          .getAdapter(receiver, IDebugModelProvider.class);
      }
      if (modelProvider != null)
      {
        String[] ids = modelProvider.getModelIdentifiers();
        for (int i = 0; i < ids.length; i++) {
          if (ids[i].equals(expectedValue)) {
            return true;
          }
        }
        return false;
      }
      return "".equals(expectedValue);
    }
    if ("isTerminatedOrDisconnected".equals(property))
    {
      if (((receiver instanceof ITerminate)) && (((ITerminate)receiver).isTerminated())) {
        return true;
      }
      if (((receiver instanceof IDisconnect)) && (((IDisconnect)receiver).isDisconnected())) {
        return true;
      }
      return false;
    }
    return false;
  }
}

/* Location:
 * Qualified Name:     org.eclipse.debug.internal.ui.DebugModelPropertyTester
 * Java Class Version: 1.2 (46.0)
 * JD-Core Version:    0.7.1
 */
package org.eclipse.debug.internal.ui;

import org.eclipse.ui.IFolderLayout;
import org.eclipse.ui.IPageLayout;
import org.eclipse.ui.IPerspectiveFactory;

public class DebugPerspectiveFactory
  implements IPerspectiveFactory
{
  public void createInitialLayout(IPageLayout layout)
  {
    IFolderLayout consoleFolder = layout.createFolder("org.eclipse.debug.internal.ui.ConsoleFolderView", 4, 0.75F, layout.getEditorArea());
    consoleFolder.addView("org.eclipse.ui.console.ConsoleView");
    consoleFolder.addView("org.eclipse.ui.views.TaskList");
    consoleFolder.addPlaceholder("org.eclipse.ui.views.BookmarkView");
    consoleFolder.addPlaceholder("org.eclipse.ui.views.PropertySheet");
    
    IFolderLayout navFolder = layout.createFolder("org.eclipse.debug.internal.ui.NavigatorFolderView", 3, 0.45F, layout.getEditorArea());
    navFolder.addView("org.eclipse.debug.ui.DebugView");
    navFolder.addPlaceholder("org.eclipse.ui.views.ResourceNavigator");
    
    IFolderLayout toolsFolder = layout.createFolder("org.eclipse.debug.internal.ui.ToolsFolderView", 2, 0.5F, "org.eclipse.debug.internal.ui.NavigatorFolderView");
    toolsFolder.addView("org.eclipse.debug.ui.VariableView");
    toolsFolder.addView("org.eclipse.debug.ui.BreakpointView");
    toolsFolder.addPlaceholder("org.eclipse.debug.ui.ExpressionView");
    toolsFolder.addPlaceholder("org.eclipse.debug.ui.RegisterView");
    
    IFolderLayout outlineFolder = layout.createFolder("org.eclipse.debug.internal.ui.OutlineFolderView", 2, 0.75F, layout.getEditorArea());
    outlineFolder.addView("org.eclipse.ui.views.ContentOutline");
    
    layout.addActionSet("org.eclipse.debug.ui.launchActionSet");
    layout.addActionSet("org.eclipse.debug.ui.debugActionSet");
    
    setContentsOfShowViewMenu(layout);
  }
  
  protected void setContentsOfShowViewMenu(IPageLayout layout)
  {
    layout.addShowViewShortcut("org.eclipse.debug.ui.DebugView");
    layout.addShowViewShortcut("org.eclipse.debug.ui.VariableView");
    layout.addShowViewShortcut("org.eclipse.debug.ui.BreakpointView");
    layout.addShowViewShortcut("org.eclipse.debug.ui.ExpressionView");
    layout.addShowViewShortcut("org.eclipse.ui.views.ContentOutline");
    layout.addShowViewShortcut("org.eclipse.ui.console.ConsoleView");
    layout.addShowViewShortcut("org.eclipse.ui.views.TaskList");
  }
}

/* Location:
 * Qualified Name:     org.eclipse.debug.internal.ui.DebugPerspectiveFactory
 * Java Class Version: 1.2 (46.0)
 * JD-Core Version:    0.7.1
 */
package org.eclipse.debug.internal.ui;

import java.net.URL;
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtensionPoint;
import org.eclipse.core.runtime.IExtensionRegistry;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Platform;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.resource.ImageRegistry;
import org.eclipse.swt.graphics.Image;
import org.osgi.framework.Bundle;

public class DebugPluginImages
{
  private static ImageRegistry imageRegistry;
  private static final String ATTR_LAUNCH_CONFIG_TYPE_ICON = "icon";
  private static final String ATTR_LAUNCH_CONFIG_TYPE_ID = "configTypeID";
  private static String ICONS_PATH = "$nl$/icons/full/";
  private static final String CTOOL = ICONS_PATH + "etool16/";
  private static final String DTOOL = ICONS_PATH + "dtool16/";
  private static final String DLCL = ICONS_PATH + "dlcl16/";
  private static final String ELCL = ICONS_PATH + "elcl16/";
  private static final String OBJECT = ICONS_PATH + "obj16/";
  private static final String WIZBAN = ICONS_PATH + "wizban/";
  private static final String OVR = ICONS_PATH + "ovr16/";
  private static final String VIEW = ICONS_PATH + "eview16/";
  
  private static void declareImages()
  {
    declareRegistryImage("IMG_ACT_DEBUG", CTOOL + "debug_exc.gif");
    declareRegistryImage("IMG_ACT_RUN", CTOOL + "run_exc.gif");
    declareRegistryImage("IMG_ACT_SYNCED", ELCL + "synced.gif");
    declareRegistryImage("IMG_SKIP_BREAKPOINTS", ELCL + "skip_brkp.gif");
    
    declareRegistryImage("IMG_LCL_CHANGE_VARIABLE_VALUE", ELCL + "changevariablevalue_co.gif");
    declareRegistryImage("IMG_DLCL_CHANGE_VARIABLE_VALUE", DLCL + "changevariablevalue_co.gif");
    declareRegistryImage("IMG_ELCL_CHANGE_VARIABLE_VALUE", ELCL + "changevariablevalue_co.gif");
    
    declareRegistryImage("IMG_LCL_CONTENT_ASSIST", ELCL + "metharg_obj.gif");
    declareRegistryImage("IMG_DLCL_CONTENT_ASSIST", DLCL + "metharg_obj.gif");
    declareRegistryImage("IMG_ELCL_CONTENT_ASSIST", ELCL + "metharg_obj.gif");
    
    declareRegistryImage("IMG_LCL_DETAIL_PANE", ELCL + "toggledetailpane_co.gif");
    declareRegistryImage("IMG_LCL_DETAIL_PANE_UNDER", ELCL + "det_pane_under.gif");
    declareRegistryImage("IMG_LCL_DETAIL_PANE_RIGHT", ELCL + "det_pane_right.gif");
    declareRegistryImage("IMG_LCL_DETAIL_PANE_HIDE", ELCL + "det_pane_hide.gif");
    declareRegistryImage("IMG_LCL_LOCK", ELCL + "lock_co.gif");
    declareRegistryImage("IMG_LCL_TYPE_NAMES", ELCL + "tnames_co.gif");
    declareRegistryImage("IMG_LCL_DISCONNECT", ELCL + "disconnect_co.gif");
    declareRegistryImage("IMG_LCL_REMOVE_ALL", ELCL + "rem_all_co.gif");
    declareRegistryImage("IMG_LCL_REMOVE", ELCL + "rem_co.gif");
    declareRegistryImage("IMG_LCL_SHOW_LOGICAL_STRUCTURE", ELCL + "var_cntnt_prvdr.gif");
    declareRegistryImage("IMG_LCL_COLLAPSE_ALL", ELCL + "collapseall.gif");
    declareRegistryImage("IMG_LCL_TERMINATE", ELCL + "terminate_co.gif");
    declareRegistryImage("IMG_LCL_RUN_TO_LINE", ELCL + "runtoline_co.gif");
    declareRegistryImage("IMG_LCL_MONITOR_EXPRESSION", ELCL + "monitorexpression_tsk.gif");
    declareRegistryImage("IMG_LCL_REMOVE_MEMORY", ELCL + "removememory_tsk.gif");
    declareRegistryImage("IMG_LCL_RESET_MEMORY", ELCL + "memoryreset_tsk.gif");
    declareRegistryImage("IMG_LCL_COPY_VIEW_TO_CLIPBOARD", ELCL + "copyviewtoclipboard_tsk.gif");
    declareRegistryImage("IMG_LCL_PRINT_TOP_VIEW_TAB", ELCL + "printview_tsk.gif");
    
    declareRegistryImage("IMG_DLCL_DETAIL_PANE", DLCL + "toggledetailpane_co.gif");
    declareRegistryImage("IMG_DLCL_DETAIL_PANE_UNDER", DLCL + "det_pane_under.gif");
    declareRegistryImage("IMG_DLCL_DETAIL_PANE_RIGHT", DLCL + "det_pane_right.gif");
    declareRegistryImage("IMG_DLCL_DETAIL_PANE_HIDE", DLCL + "det_pane_hide.gif");
    declareRegistryImage("IMG_DLCL_DETAIL_PANE_AUTO", DLCL + "det_pane_auto.gif");
    declareRegistryImage("IMG_DLCL_LOCK", DLCL + "lock_co.gif");
    declareRegistryImage("IMG_DLCL_TYPE_NAMES", DLCL + "tnames_co.gif");
    declareRegistryImage("IMG_DLCL_SHOW_LOGICAL_STRUCTURE", DLCL + "var_cntnt_prvdr.gif");
    declareRegistryImage("IMG_DLCL_COLLAPSE_ALL", DLCL + "collapseall.gif");
    declareRegistryImage("IMG_DLCL_TERMINATE", DLCL + "terminate_co.gif");
    declareRegistryImage("IMG_DLCL_REMOVE_ALL", DLCL + "rem_all_co.gif");
    declareRegistryImage("IMG_DLCL_REMOVE", DLCL + "rem_co.gif");
    declareRegistryImage("IMG_DLCL_RUN_TO_LINE", DLCL + "runtoline_co.gif");
    declareRegistryImage("IMG_DLCL_MONITOR_EXPRESSION", DLCL + "monitorexpression_tsk.gif");
    declareRegistryImage("IMG_DLCL_REMOVE_MEMORY", DLCL + "removememory_tsk.gif");
    declareRegistryImage("IMG_DLCL_RESET_MEMORY", DLCL + "memoryreset_tsk.gif");
    declareRegistryImage("IMG_DLCL_COPY_VIEW_TO_CLIPBOARD", DLCL + "copyviewtoclipboard_tsk.gif");
    declareRegistryImage("IMG_DLCL_PRINT_TOP_VIEW_TAB", DLCL + "printview_tsk.gif");
    declareRegistryImage("IMG_DLCL_DUPLICATE_CONFIG", DLCL + "copy_edit_co.gif");
    declareRegistryImage("IMG_DLCL_NEW_CONFIG", DLCL + "new_con.gif");
    declareRegistryImage("IMG_DLCL_DELETE_CONFIG", DLCL + "rem_co.gif");
    declareRegistryImage("IMG_DLCL_FILTER_CONFIGS", DLCL + "filter_ps.gif");
    declareRegistryImage("IMG_DLCL_DISCONNECT", DLCL + "disconnect_co.gif");
    declareRegistryImage("IMG_DLCL_SUSPEND", DLCL + "suspend_co.gif");
    declareRegistryImage("IMG_DLCL_RESUME", DLCL + "resume_co.gif");
    declareRegistryImage("IMG_DLCL_STEP_RETURN", DLCL + "stepreturn_co.gif");
    declareRegistryImage("IMG_DLCL_STEP_OVER", DLCL + "stepover_co.gif");
    declareRegistryImage("IMG_DLCL_STEP_INTO", DLCL + "stepinto_co.gif");
    declareRegistryImage("IMG_DLCL_TERMINATE_AND_REMOVE", DLCL + "terminate_rem_co.gif");
    declareRegistryImage("IMG_DLCL_TERMINATE_ALL", DLCL + "terminate_all_co.gif");
    declareRegistryImage("IMG_DLCL_TERMINATE_AND_RELAUNCH", DTOOL + "term_restart.gif");
    declareRegistryImage("IMG_DLCL_TOGGLE_STEP_FILTERS", DLCL + "stepbystep_co.gif");
    declareRegistryImage("IMG_DLCL_NEXT_THREAD", DLCL + "next_thread_nav.gif");
    declareRegistryImage("IMG_DLCL_PREVIOUS_THREAD", DLCL + "prev_thread_nav.gif");
    declareRegistryImage("IMG_DLCL_RESTART", DLCL + "restart_co.gif");
    
    declareRegistryImage("IMG_ELCL_DETAIL_PANE", ELCL + "toggledetailpane_co.gif");
    declareRegistryImage("IMG_ELCL_DETAIL_PANE_UNDER", ELCL + "det_pane_under.gif");
    declareRegistryImage("IMG_ELCL_DETAIL_PANE_RIGHT", ELCL + "det_pane_right.gif");
    declareRegistryImage("IMG_ELCL_DETAIL_PANE_HIDE", ELCL + "det_pane_hide.gif");
    declareRegistryImage("IMG_ELCL_DETAIL_PANE_AUTO", ELCL + "det_pane_auto.gif");
    declareRegistryImage("IMG_ELCL_DEBUG_VIEW_BREADCRUMB_LAYOUT", ELCL + "debug_view_compact.gif");
    declareRegistryImage("IMG_ELCL_LOCK", ELCL + "lock_co.gif");
    declareRegistryImage("IMG_ELCL_TYPE_NAMES", ELCL + "tnames_co.gif");
    declareRegistryImage("IMG_ELCL_SHOW_LOGICAL_STRUCTURE", ELCL + "var_cntnt_prvdr.gif");
    declareRegistryImage("IMG_ELCL_COLLAPSE_ALL", ELCL + "collapseall.gif");
    declareRegistryImage("IMG_ELCL_TERMINATE", ELCL + "terminate_co.gif");
    declareRegistryImage("IMG_ELCL_MONITOR_EXPRESSION", ELCL + "monitorexpression_tsk.gif");
    declareRegistryImage("IMG_ELCL_REMOVE_MEMORY", ELCL + "removememory_tsk.gif");
    declareRegistryImage("IMG_ELCL_RESET_MEMORY", ELCL + "memoryreset_tsk.gif");
    declareRegistryImage("IMG_ELCL_COPY_VIEW_TO_CLIPBOARD", ELCL + "copyviewtoclipboard_tsk.gif");
    declareRegistryImage("IMG_ELCL_PRINT_TOP_VIEW_TAB", ELCL + "printview_tsk.gif");
    declareRegistryImage("IMG_ELCL_REMOVE_ALL", ELCL + "rem_all_co.gif");
    declareRegistryImage("IMG_ELCL_REMOVE", ELCL + "rem_co.gif");
    declareRegistryImage("IMG_ELCL_HIERARCHICAL", ELCL + "hierarchicalLayout.gif");
    declareRegistryImage("IMG_ELCL_FILTER_CONFIGS", ELCL + "filter_ps.gif");
    declareRegistryImage("IMG_ELCL_DUPLICATE_CONFIG", ELCL + "copy_edit_co.gif");
    declareRegistryImage("IMG_ELCL_NEW_CONFIG", ELCL + "new_con.gif");
    declareRegistryImage("IMG_ELCL_DELETE_CONFIG", ELCL + "delete_config.gif");
    declareRegistryImage("IMG_ELCL_SUSPEND", ELCL + "suspend_co.gif");
    declareRegistryImage("IMG_ELCL_RESUME", ELCL + "resume_co.gif");
    declareRegistryImage("IMG_ELCL_STEP_RETURN", ELCL + "stepreturn_co.gif");
    declareRegistryImage("IMG_ELCL_STEP_OVER", ELCL + "stepover_co.gif");
    declareRegistryImage("IMG_ELCL_STEP_INTO", ELCL + "stepinto_co.gif");
    declareRegistryImage("IMG_ELCL_DROP_TO_FRAME", ELCL + "drop_to_frame.gif");
    declareRegistryImage("IMG_ELCL_TERMINATE_AND_REMOVE", ELCL + "terminate_rem_co.gif");
    declareRegistryImage("IMG_ELCL_TERMINATE_ALL", ELCL + "terminate_all_co.gif");
    declareRegistryImage("IMG_ELCL_TERMINATE_AND_RELAUNCH", CTOOL + "term_restart.gif");
    declareRegistryImage("IMG_ELCL_TOGGLE_STEP_FILTERS", ELCL + "stepbystep_co.gif");
    declareRegistryImage("IMG_ELCL_STANDARD_OUT", ELCL + "writeout_co.gif");
    declareRegistryImage("IMG_ELCL_STANDARD_ERR", ELCL + "writeerr_co.gif");
    declareRegistryImage("IMG_ELCL_NEXT_THREAD", ELCL + "next_thread_nav.gif");
    declareRegistryImage("IMG_ELCL_PREVIOUS_THREAD", ELCL + "prev_thread_nav.gif");
    declareRegistryImage("IMG_ELCL_RESTART", ELCL + "restart_co.gif");
    
    declareRegistryImage("IMG_OBJS_LAUNCH_DEBUG", OBJECT + "ldebug_obj.gif");
    declareRegistryImage("IMG_OBJS_LAUNCH_RUN", OBJECT + "lrun_obj.gif");
    declareRegistryImage("IMG_OBJS_LAUNCH_RUN_TERMINATED", OBJECT + "terminatedlaunch_obj.gif");
    declareRegistryImage("IMG_OBJS_DEBUG_TARGET", OBJECT + "debugt_obj.gif");
    declareRegistryImage("IMG_OBJS_DEBUG_TARGET_SUSPENDED", OBJECT + "debugts_obj.gif");
    declareRegistryImage("IMG_OBJS_DEBUG_TARGET_TERMINATED", OBJECT + "debugtt_obj.gif");
    declareRegistryImage("IMG_OBJS_THREAD_RUNNING", OBJECT + "thread_obj.gif");
    declareRegistryImage("IMG_OBJS_THREAD_SUSPENDED", OBJECT + "threads_obj.gif");
    declareRegistryImage("IMG_OBJS_THREAD_TERMINATED", OBJECT + "threadt_obj.gif");
    declareRegistryImage("IMG_OBJS_STACKFRAME", OBJECT + "stckframe_obj.gif");
    declareRegistryImage("IMG_OBJS_STACKFRAME_RUNNING", OBJECT + "stckframe_running_obj.gif");
    declareRegistryImage("IMG_OBJS_VARIABLE", OBJECT + "genericvariable_obj.gif");
    declareRegistryImage("IMG_OBJS_REGISTER", OBJECT + "genericregister_obj.gif");
    declareRegistryImage("IMG_OBJS_REGISTER_GROUP", OBJECT + "genericreggroup_obj.gif");
    declareRegistryImage("IMG_OBJS_BREAKPOINT", OBJECT + "brkp_obj.gif");
    declareRegistryImage("IMG_OBJS_BREAKPOINT_DISABLED", OBJECT + "brkpd_obj.gif");
    declareRegistryImage("IMG_OBJS_BREAKPOINT_GROUP", OBJECT + "brkp_grp.gif");
    declareRegistryImage("IMG_OBJS_BREAKPOINT_GROUP_DISABLED", OBJECT + "brkp_grp_disabled.gif");
    declareRegistryImage("IMG_OBJS_WATCHPOINT", OBJECT + "readwrite_obj.gif");
    declareRegistryImage("IMG_OBJS_WATCHPOINT_DISABLED", OBJECT + "readwrite_obj_disabled.gif");
    declareRegistryImage("IMG_OBJS_ACCESS_WATCHPOINT", OBJECT + "read_obj.gif");
    declareRegistryImage("IMG_OBJS_ACCESS_WATCHPOINT_DISABLED", OBJECT + "read_obj_disabled.gif");
    declareRegistryImage("IMG_OBJS_MODIFICATION_WATCHPOINT", OBJECT + "write_obj.gif");
    declareRegistryImage("IMG_OBJS_MODIFICATION_WATCHPOINT_DISABLED", OBJECT + "write_obj_disabled.gif");
    declareRegistryImage("IMG_OBJS_OS_PROCESS", OBJECT + "osprc_obj.gif");
    declareRegistryImage("IMG_OBJS_OS_PROCESS_TERMINATED", OBJECT + "osprct_obj.gif");
    declareRegistryImage("IMG_OBJS_EXPRESSION", OBJECT + "expression_obj.gif");
    declareRegistryImage("IMG_OBJS_INSTRUCTION_POINTER_TOP", OBJECT + "inst_ptr_top.gif");
    declareRegistryImage("IMG_OBJS_INSTRUCTION_POINTER", OBJECT + "inst_ptr.gif");
    declareRegistryImage("IMG_OBJS_ARRAY_PARTITION", OBJECT + "arraypartition_obj.gif");
    declareRegistryImage("IMG_OBJS_ENV_VAR", OBJECT + "envvar_obj.gif");
    declareRegistryImage("IMG_OBJECT_MEMORY_CHANGED", OBJECT + "memorychanged_obj.gif");
    declareRegistryImage("IMG_OBJECT_MEMORY", OBJECT + "memory_obj.gif");
    declareRegistryImage("IMG_OBJ_BREAKPOINT_TYPE", OBJECT + "brkp_type.gif");
    
    declareRegistryImage("IMG_OBJS_COMMON_TAB", OBJECT + "common_tab.gif");
    declareRegistryImage("IMG_OBJS_REFRESH_TAB", OBJECT + "refresh_tab.gif");
    declareRegistryImage("IMG_OBJS_PERSPECTIVE_TAB", OBJECT + "persp_tab.gif");
    declareRegistryImage("IMG_OBJS_ENVIRONMENT", OBJECT + "environment_obj.gif");
    
    declareRegistryImage("IMG_VIEW_BREAKPOINTS", VIEW + "breakpoint_view.gif");
    declareRegistryImage("IMG_VIEW_EXPRESSIONS", VIEW + "watchlist_view.gif");
    declareRegistryImage("IMG_VIEW_LAUNCHES", VIEW + "debug_view.gif");
    declareRegistryImage("IMG_VIEW_VARIABLES", VIEW + "variable_view.gif");
    declareRegistryImage("IMG_CVIEW_MEMORY_VIEW", VIEW + "memory_view.gif");
    declareRegistryImage("IMG_CVIEW_MODULES_VIEW", VIEW + "module_view.gif");
    
    declareRegistryImage("IMG_PERSPECTIVE_DEBUG", VIEW + "debug_persp.gif");
    
    declareRegistryImage("IMG_WIZBAN_DEBUG", WIZBAN + "debug_wiz.png");
    declareRegistryImage("IMG_WIZBAN_RUN", WIZBAN + "run_wiz.png");
    declareRegistryImage("IMG_WIZBAN_IMPORT_BREAKPOINTS", WIZBAN + "import_brkpts_wizban.png");
    declareRegistryImage("IMG_WIZBAN_EXPORT_BREAKPOINTS", WIZBAN + "export_brkpts_wizban.png");
    declareRegistryImage("IMG_WIZBAN_IMPORT_CONFIGS", WIZBAN + "import_config_wizban.png");
    declareRegistryImage("IMG_WIZBAN_EXPORT_CONFIGS", WIZBAN + "export_config_wizban.png");
    
    declareRegistryImage("IMG_OVR_ERROR", OVR + "error.gif");
    declareRegistryImage("IMG_OVR_TRANSPARENT", OVR + "transparent.gif");
    declareRegistryImage("IMG_OVR_SKIP_BREAKPOINT", OVR + "skip_breakpoint_ov.gif");
    
    declareRegistryImage("IMG_SRC_LOOKUP_MENU", ELCL + "edtsrclkup_co.gif");
    declareRegistryImage("IMG_SRC_LOOKUP_MENU_DISABLED", DLCL + "edtsrclkup_co.gif");
    declareRegistryImage("IMG_SRC_LOOKUP_MENU_ENABLED", ELCL + "edtsrclkup_co.gif");
    declareRegistryImage("IMG_SRC_LOOKUP_TAB", ELCL + "edtsrclkup_co.gif");
    declareRegistryImage("IMG_ADD_SRC_LOCATION", WIZBAN + "addsrcloc_wiz.png");
    declareRegistryImage("IMG_EDIT_SRC_LOCATION", WIZBAN + "edtsrclkup_wiz.png");
    declareRegistryImage("IMG_ADD_SRC_DIRECTORY", WIZBAN + "adddir_wiz.png");
    declareRegistryImage("IMG_EDIT_SRC_DIRECTORY", WIZBAN + "editdir_wiz.png");
    
    IExtensionPoint extensionPoint = Platform.getExtensionRegistry().getExtensionPoint(DebugUIPlugin.getUniqueIdentifier(), "launchConfigurationTypeImages");
    IConfigurationElement[] configElements = extensionPoint.getConfigurationElements();
    for (int i = 0; i < configElements.length; i++)
    {
      IConfigurationElement configElement = configElements[i];
      ImageDescriptor descriptor = DebugUIPlugin.getImageDescriptor(configElement, "icon");
      if (descriptor == null) {
        descriptor = ImageDescriptor.getMissingImageDescriptor();
      }
      String configTypeID = configElement.getAttribute("configTypeID");
      if (configTypeID == null) {
        configTypeID = configElement.getAttribute("type");
      }
      imageRegistry.put(configTypeID, descriptor);
    }
  }
  
  private static final void declareRegistryImage(String key, String path)
  {
    ImageDescriptor desc = ImageDescriptor.getMissingImageDescriptor();
    Bundle bundle = Pl
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118

Further reading...

For more information on Java 1.5 Tiger, you may find Java 1.5 Tiger, A developer's Notebook by D. Flanagan and B. McLaughlin from O'Reilly of interest.

New!JAR listings


Copyright 2006-2017. Infinite Loop Ltd