mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-13 20:15:22 +02:00
[318836] Period in filter name causes wrong message on drag and drop
This commit is contained in:
parent
2f7b62fa7c
commit
ddb2de4c9c
1 changed files with 38 additions and 22 deletions
|
@ -1,5 +1,5 @@
|
||||||
/********************************************************************************
|
/********************************************************************************
|
||||||
* Copyright (c) 2002, 2009 IBM Corporation and others. All rights reserved.
|
* Copyright (c) 2002, 20010 IBM Corporation and others. All rights reserved.
|
||||||
* This program and the accompanying materials are made available under the terms
|
* 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
|
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||||
* available at http://www.eclipse.org/legal/epl-v10.html
|
* available at http://www.eclipse.org/legal/epl-v10.html
|
||||||
|
@ -48,6 +48,7 @@
|
||||||
* David McKnight (IBM) - [262930] Remote System Details view not restoring filter memento input
|
* David McKnight (IBM) - [262930] Remote System Details view not restoring filter memento input
|
||||||
* David McKnight (IBM) - [272882] [api] Handle exceptions in IService.initService()
|
* David McKnight (IBM) - [272882] [api] Handle exceptions in IService.initService()
|
||||||
* David McKnight (IBM) - [284018] concurrent SubSystem.connect() calls can result in double login-prompt
|
* David McKnight (IBM) - [284018] concurrent SubSystem.connect() calls can result in double login-prompt
|
||||||
|
* David McKnight (IBM) - [318836] Period in filter name causes wrong message on drag and drop
|
||||||
* ********************************************************************************/
|
* ********************************************************************************/
|
||||||
|
|
||||||
package org.eclipse.rse.core.subsystems;
|
package org.eclipse.rse.core.subsystems;
|
||||||
|
@ -922,7 +923,7 @@ implements IAdaptable, ISubSystem, ISystemFilterPoolReferenceManagerProvider
|
||||||
protected Object getFilterReferenceWithAbsoluteName(String key)
|
protected Object getFilterReferenceWithAbsoluteName(String key)
|
||||||
{
|
{
|
||||||
// figure out if there is a filter
|
// figure out if there is a filter
|
||||||
String filterID = key;
|
String filterID = key;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
ISystemFilterPoolReferenceManager filterMgr = getFilterPoolReferenceManager();
|
ISystemFilterPoolReferenceManager filterMgr = getFilterPoolReferenceManager();
|
||||||
|
@ -939,40 +940,55 @@ implements IAdaptable, ISubSystem, ISystemFilterPoolReferenceManagerProvider
|
||||||
ISystemFilterPoolManager mgr = parentSubSystemConfiguration.getSystemFilterPoolManager(mgrName);
|
ISystemFilterPoolManager mgr = parentSubSystemConfiguration.getSystemFilterPoolManager(mgrName);
|
||||||
|
|
||||||
if (mgr != null && segments.length > 1){
|
if (mgr != null && segments.length > 1){
|
||||||
// name of the filter is the last segment
|
|
||||||
String filterName = segments[segments.length - 1];
|
|
||||||
|
|
||||||
// filter pool name is the 3rd and 2nd to last segment
|
|
||||||
//String filterPoolName =
|
|
||||||
// segments[segments.length - 3] + '.' +
|
|
||||||
// segments[segments.length - 2];
|
|
||||||
|
|
||||||
|
int segNo = 0;
|
||||||
|
|
||||||
ISystemFilterPool filterPool = null;
|
ISystemFilterPool filterPool = null;
|
||||||
ISystemFilterPool[] filterPools = mgr.getSystemFilterPools();
|
ISystemFilterPool[] filterPools = mgr.getSystemFilterPools();
|
||||||
for (int p = 0; p < filterPools.length && filterPool == null; p++){
|
for (int p = 0; p < filterPools.length && filterPool == null; p++){
|
||||||
|
segNo = 2; // initial segment number for filter pool is 2nd to last
|
||||||
|
|
||||||
ISystemFilterPool pool = filterPools[p];
|
ISystemFilterPool pool = filterPools[p];
|
||||||
String realPoolName = pool.getName();
|
String realPoolName = pool.getName();
|
||||||
|
|
||||||
// check for match
|
// check for match
|
||||||
String filterPoolName = segments[segments.length - 2];
|
|
||||||
for (int s = 3; s < segments.length && filterPool == null; s++){
|
while (filterPool == null && segNo < segments.length){
|
||||||
if (filterPoolName.equals(realPoolName)){
|
String filterPoolName = segments[segments.length - segNo];
|
||||||
filterPool = pool;
|
|
||||||
|
for (int s = segNo + 1; s < segments.length && filterPool == null; s++){
|
||||||
|
if (filterPoolName.equals(realPoolName)){
|
||||||
|
filterPool = pool;
|
||||||
|
}
|
||||||
|
else if (realPoolName.endsWith(filterPoolName)){
|
||||||
|
filterPoolName = segments[segments.length - s] + '.' + filterPoolName;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// no match
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (filterPool == null){
|
||||||
|
segNo++; // move further up the string
|
||||||
}
|
}
|
||||||
else if (realPoolName.endsWith(filterPoolName)){
|
}
|
||||||
filterPoolName = segments[segments.length - s] + '.' + filterPoolName;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// no match
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (filterPool != null)
|
if (filterPool != null)
|
||||||
{
|
{
|
||||||
|
// name of the filter is the last segment
|
||||||
|
//String filterName = segments[segments.length - 1];
|
||||||
|
StringBuffer filterBuf = new StringBuffer();
|
||||||
|
for (int i = segNo - 1; i > 0; i--){ // dealing with filtername that potentially had a dot in it
|
||||||
|
String filterPartName = segments[segments.length - i];
|
||||||
|
filterBuf.append(filterPartName);
|
||||||
|
if (i > 1){
|
||||||
|
filterBuf.append('.');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
String filterName = filterBuf.toString();
|
||||||
|
|
||||||
ISystemFilter filter = filterPool.getSystemFilter(filterName);
|
ISystemFilter filter = filterPool.getSystemFilter(filterName);
|
||||||
ISystemFilterReference ref = filterMgr.getSystemFilterReference(this, filter);
|
ISystemFilterReference ref = filterMgr.getSystemFilterReference(this, filter);
|
||||||
if (ref != null)
|
if (ref != null)
|
||||||
|
|
Loading…
Add table
Reference in a new issue