/*******************************************************************************
* Copyright (c) 2016 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is 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:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.tools.windup.ui.internal.editor;
import static org.jboss.tools.windup.model.domain.WindupConstants.WINDUP_RUN_COMPLETED;
import javax.annotation.PostConstruct;
import javax.inject.Inject;
import org.eclipse.e4.core.contexts.ContextInjectionFactory;
import org.eclipse.e4.core.di.annotations.Optional;
import org.eclipse.e4.ui.di.Focus;
import org.eclipse.e4.ui.di.UIEventTopic;
import org.eclipse.swt.widgets.Composite;
import org.jboss.tools.windup.ui.internal.editor.issues.WindupIssuesTab;
import org.jboss.tools.windup.ui.internal.editor.launch.WindupConfigurationTab;
import org.jboss.tools.windup.ui.internal.editor.report.WindupReportTab;
import org.jboss.tools.windup.windup.ConfigurationElement;
import com.google.common.base.Objects;
/**
* Represents a stack of tabs within the Windup editor.
*/
public class WindupTabStack extends TabStack {
@Inject private ConfigurationElement configuration;
private TabWrapper issuesTab;
private TabWrapper reportTab;
@PostConstruct
@Override
protected void create(Composite parent) {
super.create(parent);
addTab(WindupConfigurationTab.class);
updateTabs();
folder.setSelection(0);
}
@Inject
@Optional
private void updateDynamicTabs(@UIEventTopic(WINDUP_RUN_COMPLETED) ConfigurationElement configuration) {
if (Objects.equal(this.configuration, configuration)) {
updateTabs();
folder.setSelection(1);
}
}
private void updateTabs() {
if (issuesTab == null && reportTab == null) {
this.reportTab = addTab(WindupReportTab.class);
this.issuesTab = addTab(WindupIssuesTab.class);
}
}
public void focus() {
for (TabWrapper wrapper : tabs.values()) {
ContextInjectionFactory.invoke(wrapper.getObject(),
Focus.class, wrapper.getContext(), null);
}
}
}