/******************************************************************************* * Copyright (c) 2007- VTT Technical Research Centre of Finland. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * VTT Technical Research Centre of Finland - initial API and implementation *******************************************************************************/ package org.simantics.proconf.g3d.actions; import org.simantics.db.Graph; import org.simantics.db.GraphRequest; import org.simantics.db.GraphRequestAdapter; import org.simantics.db.GraphRequestStatus; import org.simantics.db.Session; import org.simantics.proconf.g3d.base.ThreeDimensionalEditorBase; public abstract class ReadAction extends ContextAction { boolean sync; public ReadAction(ThreeDimensionalEditorBase parent, boolean sync) { super(parent); this.sync = sync; } @Override public final void run() { Session session = parent.getSession(); if(!canActivate()) { return; } GraphRequest r = new GraphRequestAdapter() { @Override public GraphRequestStatus perform(Graph g) throws Exception { doChanges(g); return GraphRequestStatus.transactionComplete(); } }; if (sync) { session.syncRead(r); } else { session.asyncRead(r); } } public abstract void doChanges(Graph graph) throws Exception; public boolean canActivate() { return true; } }