blob: 2856de4c1799f82c846c9e72a89c02072cbc8c89 [file] [log] [blame]
/*=============================================================================#
# Copyright (c) 2011, 2018 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.rj.server.client;
import org.eclipse.statet.jcommons.status.ProgressMonitor;
import org.eclipse.statet.jcommons.status.StatusException;
import org.eclipse.statet.rj.server.gr.Coord;
import org.eclipse.statet.rj.server.gr.GraOp;
public abstract class AbstractRJComClientGraphicActions implements RClientGraphicActions {
public static interface Factory {
AbstractRJComClientGraphicActions create(AbstractRJComClient rjs, Object rHandle);
}
protected final AbstractRJComClient rjs;
protected AbstractRJComClientGraphicActions(final AbstractRJComClient rjs) {
if (rjs == null) {
throw new NullPointerException("rjs");
}
this.rjs= rjs;
}
public void doResizeGraphic(final int devId,
final ProgressMonitor m) throws StatusException {
this.rjs.execSyncGraphicOp(devId, GraOp.OP_REQUEST_RESIZE, m);
}
public void doCloseGraphic(final int devId,
final ProgressMonitor m) throws StatusException {
this.rjs.execSyncGraphicOp(devId, GraOp.OP_CLOSE, m);
}
@Override
public void copy(final int devId, final String toDev, final String toDevFile, final String toDevArgs,
final ProgressMonitor m) throws StatusException {
final StringBuilder sb= new StringBuilder(64);
sb.append("rj:::gr.copyGraphic(");
sb.append("devNr=").append((devId + 1)).append("L,");
sb.append("device=").append(toDev).append(",");
if (toDevFile != null) {
sb.append("file=\"").append(toDevFile).append("\",");
}
if (toDevArgs != null && toDevArgs.length() > 0) {
sb.append(toDevArgs);
sb.append(",");
}
sb.replace(sb.length()-1, sb.length(), ")");
this.rjs.evalVoid(sb.toString(), null, m);
}
@Override
public double[] convertGraphic2User(final int devId, final double[] xy,
final ProgressMonitor m) throws StatusException {
if (xy == null) {
throw new NullPointerException("xy");
}
if (xy.length != 2) {
throw new IllegalArgumentException("length of xy");
}
final Coord coord= (Coord) this.rjs.execSyncGraphicOp(devId, GraOp.OP_CONVERT_DEV2USER,
new Coord(xy[0], xy[1]), m );
if (coord != null && !Double.isNaN(coord.getX()) && !Double.isNaN(coord.getY())) {
return new double[] { coord.getX(), coord.getY() };
}
return null;
}
@Override
public double[] convertUser2Graphic(final int devId, final double[] xy,
final ProgressMonitor m) throws StatusException {
if (xy == null) {
throw new NullPointerException("xy");
}
if (xy.length != 2) {
throw new IllegalArgumentException("length of xy");
}
final Coord coord= (Coord) this.rjs.execSyncGraphicOp(devId, GraOp.OP_CONVERT_USER2DEV,
new Coord(xy[0], xy[1]), m );
if (coord != null && !Double.isNaN(coord.getX()) && !Double.isNaN(coord.getY())) {
return new double[] { coord.getX(), coord.getY() };
}
return null;
}
}