// ============================================================================
//
// Copyright (C) 2006-2012 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.designer.core.ui.editor.connections;
import org.eclipse.gef.commands.Command;
import org.eclipse.gef.editpolicies.DirectEditPolicy;
import org.eclipse.gef.requests.DirectEditRequest;
import org.eclipse.jface.dialogs.MessageDialog;
import org.talend.core.model.components.IComponent;
import org.talend.core.model.metadata.IMetadataTable;
import org.talend.designer.core.i18n.Messages;
import org.talend.designer.core.model.process.ConnectionManager;
import org.talend.designer.core.ui.editor.cmd.ChangeConnTextCommand;
/**
* Policy to edit the label of the connection. <br/>
*
* $Id: ConnTextEditPolicy.java 77219 2012-01-24 01:14:15Z mhirt $
*
*/
public class ConnTextEditPolicy extends DirectEditPolicy {
/*
* (non-Javadoc)
*
* @see
* org.eclipse.gef.editpolicies.DirectEditPolicy#getDirectEditCommand(org.eclipse.gef.requests.DirectEditRequest)
*/
protected Command getDirectEditCommand(DirectEditRequest edit) {
String labelText = (String) edit.getCellEditor().getValue();
ConnLabelEditPart labelPart = (ConnLabelEditPart) getHost();
Connection connec = (Connection) getHost().getParent().getModel();
// if the user enter the same name as the current connection, we just ignore it.
if (!connec.getName().equalsIgnoreCase(labelText)) {
if (!ConnectionManager.canRename(connec.getSource(), connec.getTarget(), connec.getLineStyle(), labelText)) {
String message = Messages.getString("ConnectionCreateAction.errorCreateConnectionName", labelText); //$NON-NLS-1$
MessageDialog.openError(getHost().getViewer().getControl().getShell(), Messages
.getString("ConnTextEditPolicy.ErrorTitle"), message); //$NON-NLS-1$
return null;
} else {
final IMetadataTable metadataTable = connec.getMetadataTable();
if (connec.getSource() != null && connec.getSource().getComponent() != null && metadataTable != null) {
IComponent comp = connec.getSource().getComponent();
if ("tMap".equals(comp.getName()) && metadataTable.getTableName().endsWith("ErrorReject")) {//$NON-NLS-1$//$NON-NLS-1$
MessageDialog.openInformation(getHost().getViewer().getControl().getShell(), "Infor",
"Can't rename tMap ErrorReject");
return null;
}
}
}
}
ChangeConnTextCommand command = new ChangeConnTextCommand((Connection) labelPart.getParent().getModel(), labelText);
return command;
}
/*
* (non-Javadoc)
*
* @see
* org.eclipse.gef.editpolicies.DirectEditPolicy#showCurrentEditValue(org.eclipse.gef.requests.DirectEditRequest)
*/
protected void showCurrentEditValue(DirectEditRequest request) {
}
}