1 /******************************************************************************* 2 * Copyright (c) 2000, 2006 IBM Corporation and others. 3 * All rights reserved. This program and the accompanying materials 4 * are made available under the terms of the Eclipse Public License v1.0 5 * which accompanies this distribution, and is available at 6 * http://www.eclipse.org/legal/epl-v10.html 7 * 8 * Contributors: 9 * IBM Corporation - initial API and implementation 10 *******************************************************************************/ 11 package org.eclipse.pde.core.plugin; 12 13 import org.eclipse.pde.core.IModel; 14 import org.eclipse.pde.core.IModelChangeProvider; 15 /** 16 * This type of model is created by parsing the manifest file. 17 * It serves as a base interface for both plug-in and 18 * fragment models by holding data common to both. 19 * If the file is a workspace resource, it will be 20 * available as the underlying resource of the model. 21 * The model may be read-only or editable. 22 * It will also make a reference to the build.properties 23 * model when created. The reference will be of the 24 * same type as the model itself: if the model is 25 * editable, it will attempt to obtain an exclusive 26 * editable copy of build.properties model. 27 * <p> 28 * The plug-in model can be disabled. Disabling the 29 * model will not change its data. Users of the 30 * model will have to decide if the disabled state 31 * if of any importance to them or not. 32 * <p> 33 * The model is capable of notifying listeners 34 * about changes. An attempt to change a read-only 35 * model will result in a CoreException. 36 */ 37 public interface ISharedPluginModel extends IModel, IModelChangeProvider { 38 /** 39 * Returns a factory object that should be used 40 * to create new instances of the model objects. 41 */ 42 IExtensionsModelFactory getFactory(); 43 /** 44 * Returns a location of the file that was used 45 * to create this model. The location can be that 46 * of a directory or that of a JAR file. 47 * 48 * @return a location of the external model, or 49 * <samp>null</samp> if the model is not created 50 * from a resource or a file in the file system. 51 */ 52 String getInstallLocation(); 53 54 } 55