// Copyright (c) 2010 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.ui; import java.util.Collections; import java.util.Set; import org.chromium.debug.core.model.LineBreakpointAdapter; import org.eclipse.debug.ui.actions.IToggleBreakpointsTarget; import org.eclipse.debug.ui.actions.IToggleBreakpointsTargetFactory; import org.eclipse.jface.text.ITextSelection; import org.eclipse.jface.viewers.ISelection; import org.eclipse.ui.IWorkbenchPart; /** * Toggle breakpoint target factory for Chromium breakpoints. */ public class ChromiumToggleBreakpointTargetFactory implements IToggleBreakpointsTargetFactory { private static final String TOGGLE_TARGET_ID = "org.chromium.debug.ui.toggleTargetId"; //$NON-NLS-1$ private static final Set<String> TOGGLE_TARGET_ID_SET = Collections.singleton(TOGGLE_TARGET_ID); @Override public Set<String> getToggleTargets(IWorkbenchPart part, ISelection selection) { if (isApplicable(part, selection)) { return Collections.emptySet(); } return TOGGLE_TARGET_ID_SET; } @Override public String getDefaultToggleTarget(IWorkbenchPart part, ISelection selection) { if (isApplicable(part, selection)) { return null; } return TOGGLE_TARGET_ID; } private boolean isApplicable(IWorkbenchPart part, ISelection selection) { return LineBreakpointAdapter.ForVirtualProject.getEditorStatic(part) == null || selection instanceof ITextSelection == false; } @Override public IToggleBreakpointsTarget createToggleTarget(String targetID) { return new LineBreakpointAdapter.ForVirtualProject(); } @Override public String getToggleTargetName(String targetID) { return Messages.ChromiumToggleBreakpointTargetFactory_TOGGLE_TARGET_NAME; } @Override public String getToggleTargetDescription(String targetID) { return Messages.ChromiumToggleBreakpointTargetFactory_TOGGLE_TARGET_DESCRIPTION; } }