LayoutEditorMatchingStrategy.java revision ab36f4e7488358dea4ab6b54ee2b7bef3da0232b
155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project/* 255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * 455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * Licensed under the Eclipse Public License, Version 1.0 (the "License"); 555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * you may not use this file except in compliance with the License. 655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * You may obtain a copy of the License at 755a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * 855a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * http://www.eclipse.org/org/documents/epl-v10.php 955a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * 1055a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 1155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 1255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * See the License for the specific language governing permissions and 1455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * limitations under the License. 1555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project */ 1655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project 1769425d803b34589309a69eddc53a338e1409b30cXavier Ducrohetpackage com.android.ide.eclipse.adt.internal.editors.layout; 1855a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project 19026ba97e98e0527d910e15c4e1512893a777a8d2Xavier Ducrohetimport com.android.ide.common.resources.ResourceFolder; 2060a544ae112b5b6a7bba76e3357f143bc207ce6bXavier Ducrohetimport com.android.ide.eclipse.adt.internal.resources.manager.ResourceManager; 21868a7bbe7c5862c02483ef8f71276fc551d40d60Xavier Ducrohetimport com.android.resources.ResourceFolderType; 2255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project 2355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Projectimport org.eclipse.core.resources.IFile; 2455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Projectimport org.eclipse.ui.IEditorInput; 2555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Projectimport org.eclipse.ui.IEditorMatchingStrategy; 2655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Projectimport org.eclipse.ui.IEditorReference; 2755a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Projectimport org.eclipse.ui.PartInitException; 2855a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Projectimport org.eclipse.ui.part.FileEditorInput; 2955a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project 3055a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project/** 3155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * Matching strategy for the Layout Editor. This is used to open all configurations of a layout 3255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * in the same editor. 3355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project */ 3455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Projectpublic class MatchingStrategy implements IEditorMatchingStrategy { 3555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project 36ab36f4e7488358dea4ab6b54ee2b7bef3da0232bTor Norbye @Override 3755a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project public boolean matches(IEditorReference editorRef, IEditorInput input) { 3855a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project // first check that the file being opened is a layout file. 3955a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project if (input instanceof FileEditorInput) { 4055a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project FileEditorInput fileInput = (FileEditorInput)input; 41aa80eb0797889e53c43ef91bb8e63d8d9d5f1d24Raphael Moll 4255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project // get the IFile object and check it's in one of the layout folders. 4355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project IFile iFile = fileInput.getFile(); 4455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project ResourceFolder resFolder = ResourceManager.getInstance().getResourceFolder(iFile); 45aa80eb0797889e53c43ef91bb8e63d8d9d5f1d24Raphael Moll 4655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project // if it's a layout, we know check the name of the fileInput against the name of the 4755a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project // file being currently edited by the editor since those are independent of the config. 4855a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project if (resFolder != null && resFolder.getType() == ResourceFolderType.LAYOUT) { 4955a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project try { 5055a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project IEditorInput editorInput = editorRef.getEditorInput(); 5155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project if (editorInput instanceof FileEditorInput) { 5255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project FileEditorInput editorFileInput = (FileEditorInput)editorInput; 5355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project IFile editorIFile = editorFileInput.getFile(); 54aa80eb0797889e53c43ef91bb8e63d8d9d5f1d24Raphael Moll 5555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project return editorIFile.getProject().equals(iFile.getProject()) 5655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project && editorIFile.getName().equals(iFile.getName()); 5755a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project } 5855a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project } catch (PartInitException e) { 5955a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project // we do nothing, we'll just return false. 6055a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project } 6155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project } 6255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project } 6355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project return false; 6455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project } 6555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project} 66