blob: 992af1478b5c1ee18769625ebc52c121cbc66573 [file] [log] [blame]
/*=============================================================================#
# Copyright (c) 2010, 2019 Stephan Wahlbrink and others.
#
# This program and the accompanying materials are made available under the
# terms of the Eclipse Public License 2.0 which is available at
# https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0
# which is available at https://www.apache.org/licenses/LICENSE-2.0.
#
# SPDX-License-Identifier: EPL-2.0 OR Apache-2.0
#
# Contributors:
# Stephan Wahlbrink <sw@wahlbrink.eu> - initial API and implementation
#=============================================================================*/
package org.eclipse.statet.internal.r.debug.ui.breakpoints;
import java.util.HashSet;
import java.util.Set;
import org.eclipse.debug.ui.IDetailPane;
import org.eclipse.debug.ui.IDetailPaneFactory;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.statet.internal.r.debug.ui.Messages;
import org.eclipse.statet.r.debug.core.RDebugModel;
import org.eclipse.statet.r.debug.core.breakpoints.IRBreakpoint;
public class BreakpointDetailFactory implements IDetailPaneFactory {
public BreakpointDetailFactory() {
}
@Override
public Set getDetailPaneTypes(final IStructuredSelection selection) {
final Set<String> types= new HashSet<>();
if (selection.size() == 1 && selection.getFirstElement() instanceof IRBreakpoint) {
final String breakpointType= ((IRBreakpoint) selection.getFirstElement()).getBreakpointType();
if (breakpointType == RDebugModel.R_LINE_BREAKPOINT_TYPE_ID) {
types.add(RLineBreakpointDetailPane.ID);
}
else if (breakpointType == RDebugModel.R_METHOD_BREAKPOINT_TYPE_ID) {
types.add(RMethodBreakpointDetailPane.ID);
}
}
return types;
}
@Override
public String getDefaultDetailPane(final IStructuredSelection selection) {
if (selection.size() == 1 && selection.getFirstElement() instanceof IRBreakpoint) {
final String breakpointType= ((IRBreakpoint) selection.getFirstElement()).getBreakpointType();
if (breakpointType == RDebugModel.R_LINE_BREAKPOINT_TYPE_ID) {
return RLineBreakpointDetailPane.ID;
}
else if (breakpointType == RDebugModel.R_METHOD_BREAKPOINT_TYPE_ID) {
return RMethodBreakpointDetailPane.ID;
}
}
return null;
}
@Override
public String getDetailPaneName(final String paneID) {
if (paneID.equals(RLineBreakpointDetailPane.ID)
|| paneID.equals(RMethodBreakpointDetailPane.ID) ) {
return Messages.Breakpoint_DefaultDetailPane_name;
}
return null;
}
@Override
public String getDetailPaneDescription(final String paneID) {
if (paneID.equals(RLineBreakpointDetailPane.ID)
|| paneID.equals(RMethodBreakpointDetailPane.ID) ) {
return Messages.Breakpoint_DefaultDetailPane_description;
}
return null;
}
@Override
public IDetailPane createDetailPane(final String paneID) {
if (paneID.equals(RLineBreakpointDetailPane.ID)) {
return new RLineBreakpointDetailPane();
}
else if (paneID.equals(RMethodBreakpointDetailPane.ID)) {
return new RMethodBreakpointDetailPane();
}
return null;
}
}