commit 30720c2bf40c69dd26cd2b5cceb08c5f06d25456 Author: lijh Date: Tue Mar 10 16:36:20 2026 +0800 first commit diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..dca9214 --- /dev/null +++ b/.classpath @@ -0,0 +1,505 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..8cd39e9 --- /dev/null +++ b/.project @@ -0,0 +1,28 @@ + + + com.connor.mdbksplm + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..bb29a1d --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=GBK diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..0c68a61 --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF new file mode 100644 index 0000000..f257ca8 --- /dev/null +++ b/META-INF/MANIFEST.MF @@ -0,0 +1,518 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: Mdbksplm +Bundle-SymbolicName: com.connor.mdbksplm;singleton:=true +Bundle-Version: 1.0.0 +Export-Package: com.teamcenter.rac.stylesheet +Bundle-Vendor: CONNOR +Require-Bundle: org.eclipse.ui, + org.eclipse.core.runtime, + com.teamcenter.rac.kernel, + com.teamcenter.rac.aifrcp, + com.teamcenter.rac.common, + com.teamcenter.rac.tcapps, + com.teamcenter.rac.util, + com.teamcenter.rac.ui, + com.teamcenter.rac.ui.commands, + com.teamcenter.rac.workflow.processdesigner, + org.apache.poi, + TcSoaCoreRac +Automatic-Module-Name: com.connor.mdbksplm +Bundle-ClassPath: lib/swingx-1.6.1.jar, + ., + lib/aspose-words-17.4.0-jdk16.jar, + lib/commons-collections4-4.1.jar, + lib/xmlbeans-2.6.0.jar, + lib/jdom2-2.0.6.jar, + src/com/teamcenter/rac/stylesheet/, + lib/mssql-jdbc-8.2.2.jre8.jar, + lib2/libs/com.teamcenter.rac.external_14000.2.0/ApplicationRegistryClient.jar, + lib2/libs/com.teamcenter.rac.external_14000.2.0/commons-httpclient-contrib-3.1.jar, + lib2/libs/com.teamcenter.rac.external_14000.2.0/fccclient.jar, + lib2/libs/com.teamcenter.rac.external_14000.2.0/fscclient.jar, + lib2/libs/com.teamcenter.rac.external_14000.2.0/jakarta.activation.jar, + lib2/libs/com.teamcenter.rac.external_14000.2.0/jakarta.xml.bind-api.jar, + lib2/libs/com.teamcenter.rac.external_14000.2.0/jaxb-impl.jar, + lib2/libs/com.teamcenter.rac.external_14000.2.0/jgraph.jar, + lib2/libs/com.teamcenter.rac.external_14000.2.0/mail.jar, + lib2/libs/com.teamcenter.rac.external_14000.2.0/soap.jar, + lib2/libs/com.teamcenter.rac.external_14000.2.0/TcDoclet.jar, + lib2/libs/com.teamcenter.rac.external_14000.2.0/tcserverjavabinding.jar, + lib2/libs/Ads0SoaAdsFoundationLoose_14000.2.0.jar, + lib2/libs/Ads0SoaAdsFoundationRac_14000.2.0.jar, + lib2/libs/Ads0SoaAdsFoundationStrong_14000.2.0.jar, + lib2/libs/Aed0SoaStrongModelAutomationElectricDesign_14000.2.0.jar, + lib2/libs/Ap0SoaStrongModelAdvancePlanner_14000.2.0.jar, + lib2/libs/Apb0SoaStrongModelAttrParmBase_14000.2.0.jar, + lib2/libs/Aps0SoaStrongModelApsCore_14000.2.0.jar, + lib2/libs/As0SoaAspCoreLoose_14000.2.0.jar, + lib2/libs/As0SoaAspCoreRac_14000.2.0.jar, + lib2/libs/As0SoaAspCoreStrong_14000.2.0.jar, + lib2/libs/As0SoaStrongModelAutoSupplier_14000.2.0.jar, + lib2/libs/Asp0SoaAspectLoose_14000.2.0.jar, + lib2/libs/Asp0SoaAspectRac_14000.2.0.jar, + lib2/libs/Asp0SoaAspectStrong_14000.2.0.jar, + lib2/libs/Asp0SoaStrongModelAspect_14000.2.0.jar, + lib2/libs/Att0SoaAttrTargetMgmtLoose_14000.2.0.jar, + lib2/libs/Att0SoaAttrTargetMgmtRac_14000.2.0.jar, + lib2/libs/Att0SoaAttrTargetMgmtStrong_14000.2.0.jar, + lib2/libs/Att0SoaStrongModelAttrTargetMgmt_14000.2.0.jar, + lib2/libs/Bdo0SoaStrongModelBranchDataOrganization_14000.2.0.jar, + lib2/libs/Bhv0SoaBranchFoundationLoose_14000.2.0.jar, + lib2/libs/Bhv0SoaBranchFoundationRac_14000.2.0.jar, + lib2/libs/Bhv0SoaBranchFoundationStrong_14000.2.0.jar, + lib2/libs/Bhv0SoaStrongModelBranchfoundation_14000.2.0.jar, + lib2/libs/Bom0SoaBomCoreLoose_14000.2.0.jar, + lib2/libs/Bom0SoaBomCoreRac_14000.2.0.jar, + lib2/libs/Bom0SoaBomCoreStrong_14000.2.0.jar, + lib2/libs/Bom0SoaStrongModelBomManagement_14000.2.0.jar, + lib2/libs/CAE0SoaSimProcLoose_14000.2.0.jar, + lib2/libs/CAE0SoaSimProcRac_14000.2.0.jar, + lib2/libs/CAE0SoaSimProcStrong_14000.2.0.jar, + lib2/libs/CAE0SoaStrongModelSimProc_14000.2.0.jar, + lib2/libs/Cba1SoaCbaExtLoose_14000.2.0.jar, + lib2/libs/Cba1SoaCbaExtRac_14000.2.0.jar, + lib2/libs/Cba1SoaCbaExtStrong_14000.2.0.jar, + lib2/libs/Cbm0SoaColorBomPmmLoose_14000.2.0.jar, + lib2/libs/Cbm0SoaColorBomPmmRac_14000.2.0.jar, + lib2/libs/Cbm0SoaColorBomPmmStrong_14000.2.0.jar, + lib2/libs/Cbm0SoaStrongModelColorBomPmm_14000.2.0.jar, + lib2/libs/Cdm0SoaContractManagementLoose_14000.2.0.jar, + lib2/libs/Cdm0SoaContractManagementRac_14000.2.0.jar, + lib2/libs/Cdm0SoaContractManagementStrong_14000.2.0.jar, + lib2/libs/Cfg0SoaConfiguratorLoose_14000.2.0.jar, + lib2/libs/Cfg0SoaConfiguratorRac_14000.2.0.jar, + lib2/libs/Cfg0SoaConfiguratorStrong_14000.2.0.jar, + lib2/libs/Cfg0SoaStrongModelConfigurator_14000.2.0.jar, + lib2/libs/Cfg1SoaStrongModelConfigurator_14000.2.0.jar, + lib2/libs/Cfp0SoaStrongModelFeaturePlanning_14000.2.0.jar, + lib2/libs/Cip0SoaStrongModelControlInSPPlan_14000.2.0.jar, + lib2/libs/Civ0SoaContMgmtS1000D40Loose_14000.2.0.jar, + lib2/libs/Civ0SoaContMgmtS1000D40Rac_14000.2.0.jar, + lib2/libs/Civ0SoaContMgmtS1000D40Strong_14000.2.0.jar, + lib2/libs/Cla0SoaClassificationCommonLoose_14000.2.0.jar, + lib2/libs/Cla0SoaClassificationCommonRac_14000.2.0.jar, + lib2/libs/Cla0SoaClassificationCommonStrong_14000.2.0.jar, + lib2/libs/Clr0SoaColorAppearanceLoose_14000.2.0.jar, + lib2/libs/Clr0SoaColorAppearanceRac_14000.2.0.jar, + lib2/libs/Clr0SoaColorAppearanceStrong_14000.2.0.jar, + lib2/libs/Clr0SoaStrongModelColorAppearance_14000.2.0.jar, + lib2/libs/Clr1SoaStrongModelColorRule_14000.2.0.jar, + lib2/libs/Cls0SoaClassificationCoreLoose_14000.2.0.jar, + lib2/libs/Cls0SoaClassificationCoreRac_14000.2.0.jar, + lib2/libs/Cls0SoaClassificationCoreStrong_14000.2.0.jar, + lib2/libs/com.teamcenter.rac.aif.registryeditor_14000.2.0.jar, + lib2/libs/com.teamcenter.rac.aifrcp_14000.2.0.jar, + lib2/libs/com.teamcenter.rac.kernel_14000.2.0.jar, + lib2/libs/com.teamcenter.rac.kernel.testing_14000.2.0.jar, + lib2/libs/com.teamcenter.rac.util_14000.2.0.jar, + lib2/libs/com.teamcenter.rac.util.testing_14000.2.0.jar, + lib2/libs/commons-codec-1.11.jar, + lib2/libs/commons-logging-1.2.jar, + lib2/libs/Cp0SoaStrongModelComposites_14000.2.0.jar, + lib2/libs/CPA0SoaStrongModelCapaDataModel_14000.2.0.jar, + lib2/libs/Cpd0SoaCpdCoreLoose_14000.2.0.jar, + lib2/libs/Cpd0SoaCpdCoreRac_14000.2.0.jar, + lib2/libs/Cpd0SoaCpdCoreStrong_14000.2.0.jar, + lib2/libs/Crf0SoaStrongModelCprFoundation_14000.2.0.jar, + lib2/libs/Crt0SoaStrongModelValidationContract_14000.2.0.jar, + lib2/libs/Crt0SoaValidationContractLoose_14000.2.0.jar, + lib2/libs/Crt0SoaValidationContractRac_14000.2.0.jar, + lib2/libs/Crt0SoaValidationContractStrong_14000.2.0.jar, + lib2/libs/Dia0SoaDiagrammingLoose_14000.2.0.jar, + lib2/libs/Dia0SoaDiagrammingStrong_14000.2.0.jar, + lib2/libs/Ebm0SoaStrongModelEnterpriseBOM_14000.2.0.jar, + lib2/libs/Ebm9SoaStrongModelCustomebom_14000.2.0.jar, + lib2/libs/Ec0SoaStrongModelEngChange_14000.2.0.jar, + lib2/libs/Eda0SoaEDMDCollabLoose_14000.2.0.jar, + lib2/libs/Eda0SoaEDMDCollabRac_14000.2.0.jar, + lib2/libs/Eda0SoaEDMDCollabStrong_14000.2.0.jar, + lib2/libs/Esm0SoaESMBaseLoose_14000.2.0.jar, + lib2/libs/Esm0SoaESMBaseRac_14000.2.0.jar, + lib2/libs/Esm0SoaESMBaseStrong_14000.2.0.jar, + lib2/libs/Esw0SoaStrongModelEsmgmt_14000.2.0.jar, + lib2/libs/fccclient.jar, + lib2/libs/Fdp0SoaFourDPlanningLoose_14000.2.0.jar, + lib2/libs/Fdp0SoaFourDPlanningRac_14000.2.0.jar, + lib2/libs/Fdp0SoaFourDPlanningStrong_14000.2.0.jar, + lib2/libs/Fdp0SoaStrongModelFourDPlanning_14000.2.0.jar, + lib2/libs/Fha0SoaStrongModelFHAnalysis_14000.2.0.jar, + lib2/libs/fmsticket.jar, + lib2/libs/Fnd0SoaAuditManagerLoose_14000.2.0.jar, + lib2/libs/Fnd0SoaAuditManagerRac_14000.2.0.jar, + lib2/libs/Fnd0SoaAuditManagerStrong_14000.2.0.jar, + lib2/libs/Fnd0SoaConfigFilterCriteriaLoose_14000.2.0.jar, + lib2/libs/Fnd0SoaConfigFilterCriteriaRac_14000.2.0.jar, + lib2/libs/Fnd0SoaConfigFilterCriteriaStrong_14000.2.0.jar, + lib2/libs/Fnd0SoaDiagrammingLoose_14000.2.0.jar, + lib2/libs/Fnd0SoaDiagrammingRac_14000.2.0.jar, + lib2/libs/Fnd0SoaDiagrammingStrong_14000.2.0.jar, + lib2/libs/Fnd0SoaEditContextLoose_14000.2.0.jar, + lib2/libs/Fnd0SoaEditContextRac_14000.2.0.jar, + lib2/libs/Fnd0SoaEditContextStrong_14000.2.0.jar, + lib2/libs/Fnd0SoaNotificationLoose_14000.2.0.jar, + lib2/libs/Fnd0SoaNotificationRac_14000.2.0.jar, + lib2/libs/Fnd0SoaNotificationStrong_14000.2.0.jar, + lib2/libs/Fnd0SoaParticipantLoose_14000.2.0.jar, + lib2/libs/Fnd0SoaParticipantRac_14000.2.0.jar, + lib2/libs/Fnd0SoaParticipantStrong_14000.2.0.jar, + lib2/libs/Fnd0SoaQualificationLoose_14000.2.0.jar, + lib2/libs/Fnd0SoaQualificationRac_14000.2.0.jar, + lib2/libs/Fnd0SoaQualificationStrong_14000.2.0.jar, + lib2/libs/Fnd0SoaUiConfigLoose_14000.2.0.jar, + lib2/libs/Fnd0SoaUiConfigStrong_14000.2.0.jar, + lib2/libs/Fnd0SoaWProxyLoose_14000.2.0.jar, + lib2/libs/Fnd0SoaWProxyRac_14000.2.0.jar, + lib2/libs/Fnd0SoaWProxyStrong_14000.2.0.jar, + lib2/libs/fscclient.jar, + lib2/libs/httpclient-4.5.13.jar, + lib2/libs/httpcore-4.4.13.jar, + lib2/libs/httpmime-4.5.13.jar, + lib2/libs/IAV0SoaStrongModelVerificationManagement_14000.2.0.jar, + lib2/libs/Icp0SoaStrongModelCampaignMgmt_14000.2.0.jar, + lib2/libs/Iim0SoaStrongModelIdeaMgmt_14000.2.0.jar, + lib2/libs/Im0SoaStrongModelIndustryMachinery_14000.2.0.jar, + lib2/libs/Imd0SoaMedicalDeviceLoose_14000.2.0.jar, + lib2/libs/Imd0SoaMedicalDeviceStrong_14000.2.0.jar, + lib2/libs/Imd0SoaStrongModelMedicalDevice_14000.2.0.jar, + lib2/libs/Imp0SoaLabelManagementLoose_14000.2.0.jar, + lib2/libs/Imp0SoaLabelManagementRac_14000.2.0.jar, + lib2/libs/Imp0SoaLabelManagementStrong_14000.2.0.jar, + lib2/libs/Imp0SoaStrongModelLabelManagement_14000.2.0.jar, + lib2/libs/Ipm0SoaStrongModelIntegProgMgmt_14000.2.0.jar, + lib2/libs/Ipt0SoaStrongModelTC4IPMgmt_14000.2.0.jar, + lib2/libs/Isi0SoaStrongModelIPManagement_14000.2.0.jar, + lib2/libs/jackson-annotations-2.13.4.jar, + lib2/libs/jackson-core-2.13.4.jar, + lib2/libs/jackson-databind-2.13.4.2.jar, + lib2/libs/jakarta.activation.jar, + lib2/libs/jakarta.xml.bind-api.jar, + lib2/libs/jaxb-impl.jar, + lib2/libs/Lbr0SoaLibraryManagementLoose_14000.2.0.jar, + lib2/libs/Lbr0SoaLibraryManagementRac_14000.2.0.jar, + lib2/libs/Lbr0SoaLibraryManagementStrong_14000.2.0.jar, + lib2/libs/Les0SoaStrongModelLisesm_14000.2.0.jar, + lib2/libs/Lgt0SoaLogisticsLoose_14000.2.0.jar, + lib2/libs/Lgt0SoaLogisticsRac_14000.2.0.jar, + lib2/libs/Lgt0SoaLogisticsStrong_14000.2.0.jar, + lib2/libs/Lgt0SoaStrongModelLogistics_14000.2.0.jar, + lib2/libs/Lis0SoaLdfLoose_14000.2.0.jar, + lib2/libs/Lis0SoaLdfRac_14000.2.0.jar, + lib2/libs/Lis0SoaLdfStrong_14000.2.0.jar, + lib2/libs/Lis0SoaStrongModelLdf_14000.2.0.jar, + lib2/libs/log4j-1.2-api-2.17.1.jar, + lib2/libs/log4j-api-2.17.1.jar, + lib2/libs/log4j-core-2.17.1.jar, + lib2/libs/Lrm0SoaStrongModelLisrm_14000.2.0.jar, + lib2/libs/Mat1SoaMaterialMgmtLoose_14000.2.0.jar, + lib2/libs/Mat1SoaMaterialMgmtRac_14000.2.0.jar, + lib2/libs/Mat1SoaMaterialMgmtStrong_14000.2.0.jar, + lib2/libs/Mci0SoaPMIManagementLoose_14000.2.0.jar, + lib2/libs/Mci0SoaPMIManagementRac_14000.2.0.jar, + lib2/libs/Mci0SoaPMIManagementStrong_14000.2.0.jar, + lib2/libs/Mci0SoaStrongModelPMIManagement_14000.2.0.jar, + lib2/libs/Mdc0SoaMDConnectivityLoose_14000.2.0.jar, + lib2/libs/Mdc0SoaMDConnectivityStrong_14000.2.0.jar, + lib2/libs/Mdl0SoaModelCoreLoose_14000.2.0.jar, + lib2/libs/Mdl0SoaModelCoreRac_14000.2.0.jar, + lib2/libs/Mdl0SoaModelCoreStrong_14000.2.0.jar, + lib2/libs/Mdo0SoaMDOManagementLoose_14000.2.0.jar, + lib2/libs/Mdo0SoaMDOManagementRac_14000.2.0.jar, + lib2/libs/Mdo0SoaMDOManagementStrong_14000.2.0.jar, + lib2/libs/Mdo0SoaStrongModelMdo_14000.2.0.jar, + lib2/libs/Mds0SoaStrongModelMedDevFoundation_14000.2.0.jar, + lib2/libs/Mea0SoaStrongModelMea0Fpam_14000.2.0.jar, + lib2/libs/Mei0SoaMESIntegLoose_14000.2.0.jar, + lib2/libs/Mei0SoaMESIntegRac_14000.2.0.jar, + lib2/libs/Mei0SoaMESIntegStrong_14000.2.0.jar, + lib2/libs/Mei0SoaStrongModelMESInteg_14000.2.0.jar, + lib2/libs/Mq0SoaStrongModelHara_14000.2.0.jar, + lib2/libs/Nxc0SoaTcinCpdLoose_14000.2.0.jar, + lib2/libs/Nxc0SoaTcinCpdRac_14000.2.0.jar, + lib2/libs/Nxc0SoaTcinCpdStrong_14000.2.0.jar, + lib2/libs/Nxl0SoaStrongModelLogical_14000.2.0.jar, + lib2/libs/Ods0SoaObjectDataServicesLoose_14000.2.0.jar, + lib2/libs/Ods0SoaObjectDataServicesRac_14000.2.0.jar, + lib2/libs/Ods0SoaObjectDataServicesStrong_14000.2.0.jar, + lib2/libs/Ods0SoaStrongModelObjectDataServices_14000.2.0.jar, + lib2/libs/Ods9SoaStrongModelObjectDataServicesTest_14000.2.0.jar, + lib2/libs/Oo1SoaOfficeOnlineLoose_14000.2.0.jar, + lib2/libs/Oo1SoaOfficeOnlineRac_14000.2.0.jar, + lib2/libs/Oo1SoaOfficeOnlineStrong_14000.2.0.jar, + lib2/libs/Ord0SoaStrongModelOrderManagement_14000.2.0.jar, + lib2/libs/Osl0SoaStrongModelLISOSLC_14000.2.0.jar, + lib2/libs/Pdg0SoaStrongModelPtnDesignGdlines_14000.2.0.jar, + lib2/libs/Pdm0SoaPlantDataMgmtLoose_14000.2.0.jar, + lib2/libs/Pdm0SoaPlantDataMgmtStrong_14000.2.0.jar, + lib2/libs/Pdm0SoaStrongModelPlantDataMgmt_14000.2.0.jar, + lib2/libs/Pfp0SoaFeaturePlanningLoose_14000.2.0.jar, + lib2/libs/Pfp0SoaFeaturePlanningStrong_14000.2.0.jar, + lib2/libs/Pma0SoaStrongModelAutomation_14000.2.0.jar, + lib2/libs/Pmg0SoaStrongModelCpMgmt_14000.2.0.jar, + lib2/libs/Prg0SoaProgramInfraLoose_14000.2.0.jar, + lib2/libs/Prg0SoaProgramInfraStrong_14000.2.0.jar, + lib2/libs/Prg0SoaStrongModelProgramInfra_14000.2.0.jar, + lib2/libs/Prg1SoaProgramPlanningAppLoose_14000.2.0.jar, + lib2/libs/Prg1SoaProgramPlanningAppStrong_14000.2.0.jar, + lib2/libs/Prg1SoaStrongModelProgramPlanningApp_14000.2.0.jar, + lib2/libs/Ptn0SoaPartitionLoose_14000.2.0.jar, + lib2/libs/Ptn0SoaPartitionRac_14000.2.0.jar, + lib2/libs/Ptn0SoaPartitionStrong_14000.2.0.jar, + lib2/libs/Qc0SoaStrongModelQualityCenterBase_14000.2.0.jar, + lib2/libs/Rlz0SoaRealizationLoose_14000.2.0.jar, + lib2/libs/Rlz0SoaRealizationRac_14000.2.0.jar, + lib2/libs/Rlz0SoaRealizationStrong_14000.2.0.jar, + lib2/libs/Rse0SoaStrongModelTcRsEnablement_14000.2.0.jar, + lib2/libs/SAS0SoaSvcAutoSchedulingLoose_14000.2.0.jar, + lib2/libs/SAS0SoaSvcAutoSchedulingRac_14000.2.0.jar, + lib2/libs/SAS0SoaSvcAutoSchedulingStrong_14000.2.0.jar, + lib2/libs/Sdm0SoaStrongModelSampleDocMgt_14000.2.0.jar, + lib2/libs/serializer.jar, + lib2/libs/Sfd0SoaSemiconductorFoundationLoose_14000.2.0.jar, + lib2/libs/Sfd0SoaSemiconductorFoundationStrong_14000.2.0.jar, + lib2/libs/Sfd0SoaStrongModelSemiconductorFoundation_14000.2.0.jar, + lib2/libs/Sis0SoaSocialIntLoose_14000.2.0.jar, + lib2/libs/Sis0SoaSocialIntRac_14000.2.0.jar, + lib2/libs/Sis0SoaSocialIntStrong_14000.2.0.jar, + lib2/libs/Smc0SoaStrongModelPsMcfgSupport_14000.2.0.jar, + lib2/libs/Smc0SoaStructureManagementLoose_14000.2.0.jar, + lib2/libs/Smc0SoaStructureManagementRac_14000.2.0.jar, + lib2/libs/Smc0SoaStructureManagementStrong_14000.2.0.jar, + lib2/libs/Srh0SoaStrongModelApsConfiguredSearch_14000.2.0.jar, + lib2/libs/SSF0SoaServiceForecastingLoose_14000.2.0.jar, + lib2/libs/SSF0SoaServiceForecastingRac_14000.2.0.jar, + lib2/libs/SSF0SoaServiceForecastingStrong_14000.2.0.jar, + lib2/libs/SSF0SoaStrongModelServiceForecasting_14000.2.0.jar, + lib2/libs/Ssm0SoaStrongModelSystemSynthesisModeling_14000.2.0.jar, + lib2/libs/SSP0SoaStrongModelServicePlanning_14000.2.0.jar, + lib2/libs/SSS0SoaStrongModelServiceScheduling_14000.2.0.jar, + lib2/libs/SSS0SoaSvcSchedulingLoose_14000.2.0.jar, + lib2/libs/SSS0SoaSvcSchedulingRac_14000.2.0.jar, + lib2/libs/SSS0SoaSvcSchedulingStrong_14000.2.0.jar, + lib2/libs/tcmemjavabinding.jar, + lib2/libs/tcserverjavabinding.jar, + lib2/libs/TcSoaAdministrationLoose_14000.2.0.jar, + lib2/libs/TcSoaAdministrationRac_14000.2.0.jar, + lib2/libs/TcSoaAdministrationStrong_14000.2.0.jar, + lib2/libs/TcSoaAiLoose_14000.2.0.jar, + lib2/libs/TcSoaAiRac_14000.2.0.jar, + lib2/libs/TcSoaAiStrong_14000.2.0.jar, + lib2/libs/TcSoaAllocationsLoose_14000.2.0.jar, + lib2/libs/TcSoaAllocationsRac_14000.2.0.jar, + lib2/libs/TcSoaAllocationsStrong_14000.2.0.jar, + lib2/libs/TcSoaAsbAsmAlignmentLoose_14000.2.0.jar, + lib2/libs/TcSoaAsbAsmAlignmentRac_14000.2.0.jar, + lib2/libs/TcSoaAsbAsmAlignmentStrong_14000.2.0.jar, + lib2/libs/TcSoaAsBuiltLoose_14000.2.0.jar, + lib2/libs/TcSoaAsBuiltRac_14000.2.0.jar, + lib2/libs/TcSoaAsBuiltStrong_14000.2.0.jar, + lib2/libs/TcSoaAsMaintainedLoose_14000.2.0.jar, + lib2/libs/TcSoaAsMaintainedRac_14000.2.0.jar, + lib2/libs/TcSoaAsMaintainedStrong_14000.2.0.jar, + lib2/libs/TcSoaAuthorizedDataAccessLoose_14000.2.0.jar, + lib2/libs/TcSoaAuthorizedDataAccessRac_14000.2.0.jar, + lib2/libs/TcSoaAuthorizedDataAccessStrong_14000.2.0.jar, + lib2/libs/TcSoaBomLoose_14000.2.0.jar, + lib2/libs/TcSoaBomRac_14000.2.0.jar, + lib2/libs/TcSoaBomStrong_14000.2.0.jar, + lib2/libs/TcSoaBusinessModelerLoose_14000.2.0.jar, + lib2/libs/TcSoaBusinessModelerRac_14000.2.0.jar, + lib2/libs/TcSoaBusinessModelerStrong_14000.2.0.jar, + lib2/libs/TcSoaCadBomAlignmentLoose_14000.2.0.jar, + lib2/libs/TcSoaCadBomAlignmentRac_14000.2.0.jar, + lib2/libs/TcSoaCadBomAlignmentStrong_14000.2.0.jar, + lib2/libs/TcSoaCadLoose_14000.2.0.jar, + lib2/libs/TcSoaCadRac_14000.2.0.jar, + lib2/libs/TcSoaCadStrong_14000.2.0.jar, + lib2/libs/TcSoaCaeLoose_14000.2.0.jar, + lib2/libs/TcSoaCaeRac_14000.2.0.jar, + lib2/libs/TcSoaCaeStrong_14000.2.0.jar, + lib2/libs/TcSoaCalendarManagementLoose_14000.2.0.jar, + lib2/libs/TcSoaCalendarManagementRac_14000.2.0.jar, + lib2/libs/TcSoaCalendarManagementStrong_14000.2.0.jar, + lib2/libs/TcSoaChangeManagementLoose_14000.2.0.jar, + lib2/libs/TcSoaChangeManagementRac_14000.2.0.jar, + lib2/libs/TcSoaChangeManagementStrong_14000.2.0.jar, + lib2/libs/TcSoaClassificationLoose_14000.2.0.jar, + lib2/libs/TcSoaClassificationRac_14000.2.0.jar, + lib2/libs/TcSoaClassificationStrong_14000.2.0.jar, + lib2/libs/TcSoaClient_14000.2.0.jar, + lib2/libs/TcSoaCommon_14000.2.0.jar, + lib2/libs/TcSoaContMgmtBaseLoose_14000.2.0.jar, + lib2/libs/TcSoaContMgmtBaseRac_14000.2.0.jar, + lib2/libs/TcSoaContMgmtBaseStrong_14000.2.0.jar, + lib2/libs/TcSoaCoreLoose_14000.2.0.jar, + lib2/libs/TcSoaCoreRac_14000.2.0.jar, + lib2/libs/TcSoaCoreStrong_14000.2.0.jar, + lib2/libs/TcSoaDocumentManagementLoose_14000.2.0.jar, + lib2/libs/TcSoaDocumentManagementRac_14000.2.0.jar, + lib2/libs/TcSoaDocumentManagementStrong_14000.2.0.jar, + lib2/libs/TcSoaGlobalMultiSiteLoose_14000.2.0.jar, + lib2/libs/TcSoaGlobalMultiSiteRac_14000.2.0.jar, + lib2/libs/TcSoaGlobalMultiSiteStrong_14000.2.0.jar, + lib2/libs/TcSoaImportExportLoose_14000.2.0.jar, + lib2/libs/TcSoaImportExportRac_14000.2.0.jar, + lib2/libs/TcSoaImportExportStrong_14000.2.0.jar, + lib2/libs/TcSoaIssueManagementLoose_14000.2.0.jar, + lib2/libs/TcSoaIssueManagementRac_14000.2.0.jar, + lib2/libs/TcSoaIssueManagementStrong_14000.2.0.jar, + lib2/libs/TcSoaManufacturingLoose_14000.2.0.jar, + lib2/libs/TcSoaManufacturingRac_14000.2.0.jar, + lib2/libs/TcSoaManufacturingStrong_14000.2.0.jar, + lib2/libs/TcSoaMESLoose_14000.2.0.jar, + lib2/libs/TcSoaMESRac_14000.2.0.jar, + lib2/libs/TcSoaMESStrong_14000.2.0.jar, + lib2/libs/TcSoaMROCoreLoose_14000.2.0.jar, + lib2/libs/TcSoaMROCoreRac_14000.2.0.jar, + lib2/libs/TcSoaMROCoreStrong_14000.2.0.jar, + lib2/libs/TcSoaMultisiteLoose_14000.2.0.jar, + lib2/libs/TcSoaMultisiteRac_14000.2.0.jar, + lib2/libs/TcSoaMultisiteStrong_14000.2.0.jar, + lib2/libs/TcSoaParameterManagementLoose_14000.2.0.jar, + lib2/libs/TcSoaParameterManagementRac_14000.2.0.jar, + lib2/libs/TcSoaParameterManagementStrong_14000.2.0.jar, + lib2/libs/TcSoaProductionManagementLoose_14000.2.0.jar, + lib2/libs/TcSoaProductionManagementRac_14000.2.0.jar, + lib2/libs/TcSoaProductionManagementStrong_14000.2.0.jar, + lib2/libs/TcSoaProjectManagementLoose_14000.2.0.jar, + lib2/libs/TcSoaProjectManagementRac_14000.2.0.jar, + lib2/libs/TcSoaProjectManagementStrong_14000.2.0.jar, + lib2/libs/TcSoaQueryLoose_14000.2.0.jar, + lib2/libs/TcSoaQueryRac_14000.2.0.jar, + lib2/libs/TcSoaQueryStrong_14000.2.0.jar, + lib2/libs/TcSoaRdvLoose_14000.2.0.jar, + lib2/libs/TcSoaRdvRac_14000.2.0.jar, + lib2/libs/TcSoaRdvStrong_14000.2.0.jar, + lib2/libs/TcSoaReportsLoose_14000.2.0.jar, + lib2/libs/TcSoaReportsRac_14000.2.0.jar, + lib2/libs/TcSoaReportsStrong_14000.2.0.jar, + lib2/libs/TcSoaRequirementsManagementLoose_14000.2.0.jar, + lib2/libs/TcSoaRequirementsManagementRac_14000.2.0.jar, + lib2/libs/TcSoaRequirementsManagementStrong_14000.2.0.jar, + lib2/libs/TcSoaSrmIntegrationLoose_14000.2.0.jar, + lib2/libs/TcSoaSrmIntegrationRac_14000.2.0.jar, + lib2/libs/TcSoaSrmIntegrationStrong_14000.2.0.jar, + lib2/libs/TcSoaStrongModel_14000.2.0.jar, + lib2/libs/TcSoaStrongModelAdsChangeManagement_14000.2.0.jar, + lib2/libs/TcSoaStrongModelAdsFoundation_14000.2.0.jar, + lib2/libs/TcSoaStrongModelAsBuilt_14000.2.0.jar, + lib2/libs/TcSoaStrongModelAsMaintained_14000.2.0.jar, + lib2/libs/TcSoaStrongModelBrndMgmt_14000.2.0.jar, + lib2/libs/TcSoaStrongModelCba_14000.2.0.jar, + lib2/libs/TcSoaStrongModelCcdm_14000.2.0.jar, + lib2/libs/TcSoaStrongModelCdm0ContractManagement_14000.2.0.jar, + lib2/libs/TcSoaStrongModelClassificationCore_14000.2.0.jar, + lib2/libs/TcSoaStrongModelCm_14000.2.0.jar, + lib2/libs/TcSoaStrongModelCmtEbop_14000.2.0.jar, + lib2/libs/TcSoaStrongModelCmtEmserver_14000.2.0.jar, + lib2/libs/TcSoaStrongModelCmtPadTwp_14000.2.0.jar, + lib2/libs/TcSoaStrongModelContmgmtBase_14000.2.0.jar, + lib2/libs/TcSoaStrongModelContmgmtDita_14000.2.0.jar, + lib2/libs/TcSoaStrongModelContmgmtS1000d_14000.2.0.jar, + lib2/libs/TcSoaStrongModelContmgmtS1000d40_14000.2.0.jar, + lib2/libs/TcSoaStrongModelCpdCore_14000.2.0.jar, + lib2/libs/TcSoaStrongModelCpgMaterials_14000.2.0.jar, + lib2/libs/TcSoaStrongModelDiagramming_14000.2.0.jar, + lib2/libs/TcSoaStrongModelDpv_14000.2.0.jar, + lib2/libs/TcSoaStrongModelEdaLibrary_14000.2.0.jar, + lib2/libs/TcSoaStrongModelEdaServer_14000.2.0.jar, + lib2/libs/TcSoaStrongModelEmps_14000.2.0.jar, + lib2/libs/TcSoaStrongModelEsddm_14000.2.0.jar, + lib2/libs/TcSoaStrongModelEsmBase_14000.2.0.jar, + lib2/libs/TcSoaStrongModelEsmProcessor_14000.2.0.jar, + lib2/libs/TcSoaStrongModelEsmSoftware_14000.2.0.jar, + lib2/libs/TcSoaStrongModelFnshmgmt_14000.2.0.jar, + lib2/libs/TcSoaStrongModelFpMgmt_14000.2.0.jar, + lib2/libs/TcSoaStrongModelGmo_14000.2.0.jar, + lib2/libs/TcSoaStrongModelHrn_14000.2.0.jar, + lib2/libs/TcSoaStrongModelIssuemgmt_14000.2.0.jar, + lib2/libs/TcSoaStrongModelLibraryManagement_14000.2.0.jar, + lib2/libs/TcSoaStrongModelMaterialMgmt_14000.2.0.jar, + lib2/libs/TcSoaStrongModelMDConnectivity_14000.2.0.jar, + lib2/libs/TcSoaStrongModelMES_14000.2.0.jar, + lib2/libs/TcSoaStrongModelMesIssueMgmt_14000.2.0.jar, + lib2/libs/TcSoaStrongModelModelCore_14000.2.0.jar, + lib2/libs/TcSoaStrongModelMROCore_14000.2.0.jar, + lib2/libs/TcSoaStrongModelNX0tcin_14000.2.0.jar, + lib2/libs/TcSoaStrongModelNXB0stage_14000.2.0.jar, + lib2/libs/TcSoaStrongModelNXP0pid_14000.2.0.jar, + lib2/libs/TcSoaStrongModelPartition_14000.2.0.jar, + lib2/libs/TcSoaStrongModelPenetrationmgmt_14000.2.0.jar, + lib2/libs/TcSoaStrongModelPkgArt_14000.2.0.jar, + lib2/libs/TcSoaStrongModelPlp0ProdLinePlan_14000.2.0.jar, + lib2/libs/TcSoaStrongModelPMI_14000.2.0.jar, + lib2/libs/TcSoaStrongModelProductVariant_14000.2.0.jar, + lib2/libs/TcSoaStrongModelRealization_14000.2.0.jar, + lib2/libs/TcSoaStrongModelScdt_14000.2.0.jar, + lib2/libs/TcSoaStrongModelScmCc_14000.2.0.jar, + lib2/libs/TcSoaStrongModelServiceEventManagement_14000.2.0.jar, + lib2/libs/TcSoaStrongModelServiceProcessing_14000.2.0.jar, + lib2/libs/TcSoaStrongModelServiceRequest_14000.2.0.jar, + lib2/libs/TcSoaStrongModelSmdsysmodeling_14000.2.0.jar, + lib2/libs/TcSoaStrongModelSpecMgr_14000.2.0.jar, + lib2/libs/TcSoaStrongModelSSPSPRAlignment_14000.2.0.jar, + lib2/libs/TcSoaStrongModelStockMaterial_14000.2.0.jar, + lib2/libs/TcSoaStrongModelSystemsEngineering_14000.2.0.jar, + lib2/libs/TcSoaStrongModelTcae_14000.2.0.jar, + lib2/libs/TcSoaStrongModelTransactionProcessing_14000.2.0.jar, + lib2/libs/TcSoaStrongModelVendorManagement_14000.2.0.jar, + lib2/libs/TcSoaStrongModelWeldManagement_14000.2.0.jar, + lib2/libs/TcSoaStrongModelWorkPackageManagement_14000.2.0.jar, + lib2/libs/TcSoaStructureManagementLoose_14000.2.0.jar, + lib2/libs/TcSoaStructureManagementRac_14000.2.0.jar, + lib2/libs/TcSoaStructureManagementStrong_14000.2.0.jar, + lib2/libs/TcSoaSvcProcessingLoose_14000.2.0.jar, + lib2/libs/TcSoaSvcProcessingRac_14000.2.0.jar, + lib2/libs/TcSoaSvcProcessingStrong_14000.2.0.jar, + lib2/libs/TcSoaSvcRequestLoose_14000.2.0.jar, + lib2/libs/TcSoaSvcRequestRac_14000.2.0.jar, + lib2/libs/TcSoaSvcRequestStrong_14000.2.0.jar, + lib2/libs/TcSoaSystemsEngineeringLoose_14000.2.0.jar, + lib2/libs/TcSoaSystemsEngineeringRac_14000.2.0.jar, + lib2/libs/TcSoaSystemsEngineeringStrong_14000.2.0.jar, + lib2/libs/TcSoaTranslationLoose_14000.2.0.jar, + lib2/libs/TcSoaTranslationRac_14000.2.0.jar, + lib2/libs/TcSoaTranslationStrong_14000.2.0.jar, + lib2/libs/TcSoaVendorManagementLoose_14000.2.0.jar, + lib2/libs/TcSoaVendorManagementRac_14000.2.0.jar, + lib2/libs/TcSoaVendorManagementStrong_14000.2.0.jar, + lib2/libs/TcSoaVisualizationLoose_14000.2.0.jar, + lib2/libs/TcSoaVisualizationRac_14000.2.0.jar, + lib2/libs/TcSoaVisualizationStrong_14000.2.0.jar, + lib2/libs/TcSoaWireHarnessLoose_14000.2.0.jar, + lib2/libs/TcSoaWireHarnessRac_14000.2.0.jar, + lib2/libs/TcSoaWireHarnessStrong_14000.2.0.jar, + lib2/libs/TcSoaWorkflowLoose_14000.2.0.jar, + lib2/libs/TcSoaWorkflowRac_14000.2.0.jar, + lib2/libs/TcSoaWorkflowStrong_14000.2.0.jar, + lib2/libs/tctp_14000.2.0.jar, + lib2/libs/teamcenter_sso_applib.jar, + lib2/libs/teamcenter_sso_common.jar, + lib2/libs/teamcenter_sso_ldapcustom.jar, + lib2/libs/teamcenter_sso_webtoolkit.jar, + lib2/libs/Tgm0SoaStrongModelTargetManagement_14000.2.0.jar, + lib2/libs/Tgm0SoaTargetManagementLoose_14000.2.0.jar, + lib2/libs/Tgm0SoaTargetManagementStrong_14000.2.0.jar, + lib2/libs/Tm0SoaStrongModelTestManagement_14000.2.0.jar, + lib2/libs/Tm0SoaTestManagementLoose_14000.2.0.jar, + lib2/libs/Tm0SoaTestManagementRac_14000.2.0.jar, + lib2/libs/Tm0SoaTestManagementStrong_14000.2.0.jar, + lib2/libs/Val0SoaNXValidationLoose_14000.2.0.jar, + lib2/libs/Val0SoaNXValidationRac_14000.2.0.jar, + lib2/libs/Val0SoaNXValidationStrong_14000.2.0.jar, + lib2/libs/Val0SoaStrongModelNXValidation_14000.2.0.jar, + lib2/libs/Val1SoaCfgValidationLoose_14000.2.0.jar, + lib2/libs/Val1SoaCfgValidationRac_14000.2.0.jar, + lib2/libs/Val1SoaCfgValidationStrong_14000.2.0.jar, + lib2/libs/Val1SoaStrongModelCfgValidation_14000.2.0.jar, + lib2/libs/WdM0SoaWeldManagementLoose_14000.2.0.jar, + lib2/libs/WdM0SoaWeldManagementRac_14000.2.0.jar, + lib2/libs/WdM0SoaWeldManagementStrong_14000.2.0.jar, + lib2/libs/Wnb0SoaStrongModelWeightandBalance_14000.2.0.jar, + lib2/libs/Wnb0SoaWeightAndBalanceLoose_14000.2.0.jar, + lib2/libs/Wnb0SoaWeightAndBalanceRac_14000.2.0.jar, + lib2/libs/Wnb0SoaWeightAndBalanceStrong_14000.2.0.jar, + lib2/libs/Xc0SoaStrongModelShareCollaboration_14000.2.0.jar, + lib2/libs/xercesImpl.jar +Bundle-RequiredExecutionEnvironment: JavaSE-1.8 +Import-Package: com.teamcenter.soa.exceptions diff --git a/bin/com/connnor/mdbksplm/table3/DefaultGroup.class b/bin/com/connnor/mdbksplm/table3/DefaultGroup.class new file mode 100644 index 0000000..ccd8a3b Binary files /dev/null and b/bin/com/connnor/mdbksplm/table3/DefaultGroup.class differ diff --git a/bin/com/connnor/mdbksplm/table3/Group.class b/bin/com/connnor/mdbksplm/table3/Group.class new file mode 100644 index 0000000..2ba8953 Binary files /dev/null and b/bin/com/connnor/mdbksplm/table3/Group.class differ diff --git a/bin/com/connnor/mdbksplm/table3/GroupableTableHeader.class b/bin/com/connnor/mdbksplm/table3/GroupableTableHeader.class new file mode 100644 index 0000000..09f1a12 Binary files /dev/null and b/bin/com/connnor/mdbksplm/table3/GroupableTableHeader.class differ diff --git a/bin/com/connnor/mdbksplm/table3/GroupableTableHeaderTest$1.class b/bin/com/connnor/mdbksplm/table3/GroupableTableHeaderTest$1.class new file mode 100644 index 0000000..b72537a Binary files /dev/null and b/bin/com/connnor/mdbksplm/table3/GroupableTableHeaderTest$1.class differ diff --git a/bin/com/connnor/mdbksplm/table3/GroupableTableHeaderTest.class b/bin/com/connnor/mdbksplm/table3/GroupableTableHeaderTest.class new file mode 100644 index 0000000..c346237 Binary files /dev/null and b/bin/com/connnor/mdbksplm/table3/GroupableTableHeaderTest.class differ diff --git a/bin/com/connnor/mdbksplm/table3/GroupableTableHeaderUI.class b/bin/com/connnor/mdbksplm/table3/GroupableTableHeaderUI.class new file mode 100644 index 0000000..835643f Binary files /dev/null and b/bin/com/connnor/mdbksplm/table3/GroupableTableHeaderUI.class differ diff --git a/bin/com/connnor/mdbksplm/table3/TableCellTextAreaRenderer.class b/bin/com/connnor/mdbksplm/table3/TableCellTextAreaRenderer.class new file mode 100644 index 0000000..9860f2a Binary files /dev/null and b/bin/com/connnor/mdbksplm/table3/TableCellTextAreaRenderer.class differ diff --git a/bin/com/connnor/mdbksplm/table3/TableHeaderRenderer$UIResource.class b/bin/com/connnor/mdbksplm/table3/TableHeaderRenderer$UIResource.class new file mode 100644 index 0000000..8acc8d8 Binary files /dev/null and b/bin/com/connnor/mdbksplm/table3/TableHeaderRenderer$UIResource.class differ diff --git a/bin/com/connnor/mdbksplm/table3/TableHeaderRenderer.class b/bin/com/connnor/mdbksplm/table3/TableHeaderRenderer.class new file mode 100644 index 0000000..2869e51 Binary files /dev/null and b/bin/com/connnor/mdbksplm/table3/TableHeaderRenderer.class differ diff --git a/bin/com/connor/mdbksplm/ProblemReport/ProblemReportFrame$1.class b/bin/com/connor/mdbksplm/ProblemReport/ProblemReportFrame$1.class new file mode 100644 index 0000000..81f223a Binary files /dev/null and b/bin/com/connor/mdbksplm/ProblemReport/ProblemReportFrame$1.class differ diff --git a/bin/com/connor/mdbksplm/ProblemReport/ProblemReportFrame$2.class b/bin/com/connor/mdbksplm/ProblemReport/ProblemReportFrame$2.class new file mode 100644 index 0000000..bc087ca Binary files /dev/null and b/bin/com/connor/mdbksplm/ProblemReport/ProblemReportFrame$2.class differ diff --git a/bin/com/connor/mdbksplm/ProblemReport/ProblemReportFrame$3.class b/bin/com/connor/mdbksplm/ProblemReport/ProblemReportFrame$3.class new file mode 100644 index 0000000..525890d Binary files /dev/null and b/bin/com/connor/mdbksplm/ProblemReport/ProblemReportFrame$3.class differ diff --git a/bin/com/connor/mdbksplm/ProblemReport/ProblemReportFrame$4.class b/bin/com/connor/mdbksplm/ProblemReport/ProblemReportFrame$4.class new file mode 100644 index 0000000..a904037 Binary files /dev/null and b/bin/com/connor/mdbksplm/ProblemReport/ProblemReportFrame$4.class differ diff --git a/bin/com/connor/mdbksplm/ProblemReport/ProblemReportFrame$5.class b/bin/com/connor/mdbksplm/ProblemReport/ProblemReportFrame$5.class new file mode 100644 index 0000000..3dfada2 Binary files /dev/null and b/bin/com/connor/mdbksplm/ProblemReport/ProblemReportFrame$5.class differ diff --git a/bin/com/connor/mdbksplm/ProblemReport/ProblemReportFrame$6.class b/bin/com/connor/mdbksplm/ProblemReport/ProblemReportFrame$6.class new file mode 100644 index 0000000..2fd9d31 Binary files /dev/null and b/bin/com/connor/mdbksplm/ProblemReport/ProblemReportFrame$6.class differ diff --git a/bin/com/connor/mdbksplm/ProblemReport/ProblemReportFrame.class b/bin/com/connor/mdbksplm/ProblemReport/ProblemReportFrame.class new file mode 100644 index 0000000..978e09e Binary files /dev/null and b/bin/com/connor/mdbksplm/ProblemReport/ProblemReportFrame.class differ diff --git a/bin/com/connor/mdbksplm/ProblemReport/ProblemReportHandler.class b/bin/com/connor/mdbksplm/ProblemReport/ProblemReportHandler.class new file mode 100644 index 0000000..3916cf2 Binary files /dev/null and b/bin/com/connor/mdbksplm/ProblemReport/ProblemReportHandler.class differ diff --git a/bin/com/connor/mdbksplm/ProjectTasks/ProjectTasksDialog$1.class b/bin/com/connor/mdbksplm/ProjectTasks/ProjectTasksDialog$1.class new file mode 100644 index 0000000..ab0ec0f Binary files /dev/null and b/bin/com/connor/mdbksplm/ProjectTasks/ProjectTasksDialog$1.class differ diff --git a/bin/com/connor/mdbksplm/ProjectTasks/ProjectTasksDialog$2.class b/bin/com/connor/mdbksplm/ProjectTasks/ProjectTasksDialog$2.class new file mode 100644 index 0000000..11502d8 Binary files /dev/null and b/bin/com/connor/mdbksplm/ProjectTasks/ProjectTasksDialog$2.class differ diff --git a/bin/com/connor/mdbksplm/ProjectTasks/ProjectTasksDialog$3.class b/bin/com/connor/mdbksplm/ProjectTasks/ProjectTasksDialog$3.class new file mode 100644 index 0000000..f909219 Binary files /dev/null and b/bin/com/connor/mdbksplm/ProjectTasks/ProjectTasksDialog$3.class differ diff --git a/bin/com/connor/mdbksplm/ProjectTasks/ProjectTasksDialog$4.class b/bin/com/connor/mdbksplm/ProjectTasks/ProjectTasksDialog$4.class new file mode 100644 index 0000000..13382a5 Binary files /dev/null and b/bin/com/connor/mdbksplm/ProjectTasks/ProjectTasksDialog$4.class differ diff --git a/bin/com/connor/mdbksplm/ProjectTasks/ProjectTasksDialog$5.class b/bin/com/connor/mdbksplm/ProjectTasks/ProjectTasksDialog$5.class new file mode 100644 index 0000000..612ae84 Binary files /dev/null and b/bin/com/connor/mdbksplm/ProjectTasks/ProjectTasksDialog$5.class differ diff --git a/bin/com/connor/mdbksplm/ProjectTasks/ProjectTasksDialog$6.class b/bin/com/connor/mdbksplm/ProjectTasks/ProjectTasksDialog$6.class new file mode 100644 index 0000000..e0afaed Binary files /dev/null and b/bin/com/connor/mdbksplm/ProjectTasks/ProjectTasksDialog$6.class differ diff --git a/bin/com/connor/mdbksplm/ProjectTasks/ProjectTasksDialog.class b/bin/com/connor/mdbksplm/ProjectTasks/ProjectTasksDialog.class new file mode 100644 index 0000000..5de3349 Binary files /dev/null and b/bin/com/connor/mdbksplm/ProjectTasks/ProjectTasksDialog.class differ diff --git a/bin/com/connor/mdbksplm/ProjectTasks/ProjectTasksHandler.class b/bin/com/connor/mdbksplm/ProjectTasks/ProjectTasksHandler.class new file mode 100644 index 0000000..8dfd559 Binary files /dev/null and b/bin/com/connor/mdbksplm/ProjectTasks/ProjectTasksHandler.class differ diff --git a/bin/com/connor/mdbksplm/batchCreateDoc/BatchCreateDocDialog$1.class b/bin/com/connor/mdbksplm/batchCreateDoc/BatchCreateDocDialog$1.class new file mode 100644 index 0000000..b32d74b Binary files /dev/null and b/bin/com/connor/mdbksplm/batchCreateDoc/BatchCreateDocDialog$1.class differ diff --git a/bin/com/connor/mdbksplm/batchCreateDoc/BatchCreateDocDialog$2.class b/bin/com/connor/mdbksplm/batchCreateDoc/BatchCreateDocDialog$2.class new file mode 100644 index 0000000..a74aee4 Binary files /dev/null and b/bin/com/connor/mdbksplm/batchCreateDoc/BatchCreateDocDialog$2.class differ diff --git a/bin/com/connor/mdbksplm/batchCreateDoc/BatchCreateDocDialog$3.class b/bin/com/connor/mdbksplm/batchCreateDoc/BatchCreateDocDialog$3.class new file mode 100644 index 0000000..354e479 Binary files /dev/null and b/bin/com/connor/mdbksplm/batchCreateDoc/BatchCreateDocDialog$3.class differ diff --git a/bin/com/connor/mdbksplm/batchCreateDoc/BatchCreateDocDialog.class b/bin/com/connor/mdbksplm/batchCreateDoc/BatchCreateDocDialog.class new file mode 100644 index 0000000..9b0c71d Binary files /dev/null and b/bin/com/connor/mdbksplm/batchCreateDoc/BatchCreateDocDialog.class differ diff --git a/bin/com/connor/mdbksplm/batchCreateDoc/BatchCreateDocHandler.class b/bin/com/connor/mdbksplm/batchCreateDoc/BatchCreateDocHandler.class new file mode 100644 index 0000000..e0f1c24 Binary files /dev/null and b/bin/com/connor/mdbksplm/batchCreateDoc/BatchCreateDocHandler.class differ diff --git a/bin/com/connor/mdbksplm/batchCreateDoc/BatchCreateDocOperation.class b/bin/com/connor/mdbksplm/batchCreateDoc/BatchCreateDocOperation.class new file mode 100644 index 0000000..5543f4c Binary files /dev/null and b/bin/com/connor/mdbksplm/batchCreateDoc/BatchCreateDocOperation.class differ diff --git a/bin/com/connor/mdbksplm/batchCreateDoc/CheckBoxTree/CheckBoxTree.class b/bin/com/connor/mdbksplm/batchCreateDoc/CheckBoxTree/CheckBoxTree.class new file mode 100644 index 0000000..c1a93c6 Binary files /dev/null and b/bin/com/connor/mdbksplm/batchCreateDoc/CheckBoxTree/CheckBoxTree.class differ diff --git a/bin/com/connor/mdbksplm/batchCreateDoc/CheckBoxTree/CheckBoxTreeCellRenderer.class b/bin/com/connor/mdbksplm/batchCreateDoc/CheckBoxTree/CheckBoxTreeCellRenderer.class new file mode 100644 index 0000000..3057384 Binary files /dev/null and b/bin/com/connor/mdbksplm/batchCreateDoc/CheckBoxTree/CheckBoxTreeCellRenderer.class differ diff --git a/bin/com/connor/mdbksplm/batchCreateDoc/CheckBoxTree/CheckBoxTreeLabel.class b/bin/com/connor/mdbksplm/batchCreateDoc/CheckBoxTree/CheckBoxTreeLabel.class new file mode 100644 index 0000000..821c4f8 Binary files /dev/null and b/bin/com/connor/mdbksplm/batchCreateDoc/CheckBoxTree/CheckBoxTreeLabel.class differ diff --git a/bin/com/connor/mdbksplm/batchCreateDoc/CheckBoxTree/CheckBoxTreeNode.class b/bin/com/connor/mdbksplm/batchCreateDoc/CheckBoxTree/CheckBoxTreeNode.class new file mode 100644 index 0000000..3a96164 Binary files /dev/null and b/bin/com/connor/mdbksplm/batchCreateDoc/CheckBoxTree/CheckBoxTreeNode.class differ diff --git a/bin/com/connor/mdbksplm/batchCreateDoc/CheckBoxTree/CheckBoxTreeNodeSelectionListener.class b/bin/com/connor/mdbksplm/batchCreateDoc/CheckBoxTree/CheckBoxTreeNodeSelectionListener.class new file mode 100644 index 0000000..b118204 Binary files /dev/null and b/bin/com/connor/mdbksplm/batchCreateDoc/CheckBoxTree/CheckBoxTreeNodeSelectionListener.class differ diff --git a/bin/com/connor/mdbksplm/batchCreateDoc/XmlUtil.class b/bin/com/connor/mdbksplm/batchCreateDoc/XmlUtil.class new file mode 100644 index 0000000..0d1cedb Binary files /dev/null and b/bin/com/connor/mdbksplm/batchCreateDoc/XmlUtil.class differ diff --git a/bin/com/connor/mdbksplm/batchCreateDoc/bean/Deliverable.class b/bin/com/connor/mdbksplm/batchCreateDoc/bean/Deliverable.class new file mode 100644 index 0000000..57aee10 Binary files /dev/null and b/bin/com/connor/mdbksplm/batchCreateDoc/bean/Deliverable.class differ diff --git a/bin/com/connor/mdbksplm/batchCreateDoc/bean/DeliverableList.class b/bin/com/connor/mdbksplm/batchCreateDoc/bean/DeliverableList.class new file mode 100644 index 0000000..b98fdce Binary files /dev/null and b/bin/com/connor/mdbksplm/batchCreateDoc/bean/DeliverableList.class differ diff --git a/bin/com/connor/mdbksplm/batchCreateDoc/bean/Phase.class b/bin/com/connor/mdbksplm/batchCreateDoc/bean/Phase.class new file mode 100644 index 0000000..3ca3dcc Binary files /dev/null and b/bin/com/connor/mdbksplm/batchCreateDoc/bean/Phase.class differ diff --git a/bin/com/connor/mdbksplm/batchCreateDoc/bean/ProjectType.class b/bin/com/connor/mdbksplm/batchCreateDoc/bean/ProjectType.class new file mode 100644 index 0000000..d01c045 Binary files /dev/null and b/bin/com/connor/mdbksplm/batchCreateDoc/bean/ProjectType.class differ diff --git a/bin/com/connor/mdbksplm/batchCreateDoc/bean/TreeData.class b/bin/com/connor/mdbksplm/batchCreateDoc/bean/TreeData.class new file mode 100644 index 0000000..05d5040 Binary files /dev/null and b/bin/com/connor/mdbksplm/batchCreateDoc/bean/TreeData.class differ diff --git a/bin/com/connor/mdbksplm/batchCreateDoc/util/CommonlyUtils$1.class b/bin/com/connor/mdbksplm/batchCreateDoc/util/CommonlyUtils$1.class new file mode 100644 index 0000000..9c360eb Binary files /dev/null and b/bin/com/connor/mdbksplm/batchCreateDoc/util/CommonlyUtils$1.class differ diff --git a/bin/com/connor/mdbksplm/batchCreateDoc/util/CommonlyUtils.class b/bin/com/connor/mdbksplm/batchCreateDoc/util/CommonlyUtils.class new file mode 100644 index 0000000..b0811c5 Binary files /dev/null and b/bin/com/connor/mdbksplm/batchCreateDoc/util/CommonlyUtils.class differ diff --git a/bin/com/connor/mdbksplm/batchCreateDoc/util/ComponentUtils.class b/bin/com/connor/mdbksplm/batchCreateDoc/util/ComponentUtils.class new file mode 100644 index 0000000..a80b8d0 Binary files /dev/null and b/bin/com/connor/mdbksplm/batchCreateDoc/util/ComponentUtils.class differ diff --git a/bin/com/connor/mdbksplm/batchCreateDoc/util/ProgressBarThread$1.class b/bin/com/connor/mdbksplm/batchCreateDoc/util/ProgressBarThread$1.class new file mode 100644 index 0000000..2039ae4 Binary files /dev/null and b/bin/com/connor/mdbksplm/batchCreateDoc/util/ProgressBarThread$1.class differ diff --git a/bin/com/connor/mdbksplm/batchCreateDoc/util/ProgressBarThread.class b/bin/com/connor/mdbksplm/batchCreateDoc/util/ProgressBarThread.class new file mode 100644 index 0000000..b3718c3 Binary files /dev/null and b/bin/com/connor/mdbksplm/batchCreateDoc/util/ProgressBarThread.class differ diff --git a/bin/com/connor/mdbksplm/batchCreateDoc/util/TCUtils.class b/bin/com/connor/mdbksplm/batchCreateDoc/util/TCUtils.class new file mode 100644 index 0000000..3fd7ba5 Binary files /dev/null and b/bin/com/connor/mdbksplm/batchCreateDoc/util/TCUtils.class differ diff --git a/bin/com/connor/mdbksplm/batchCreateDoc/util/TextBorderUtlis.class b/bin/com/connor/mdbksplm/batchCreateDoc/util/TextBorderUtlis.class new file mode 100644 index 0000000..550ccd8 Binary files /dev/null and b/bin/com/connor/mdbksplm/batchCreateDoc/util/TextBorderUtlis.class differ diff --git a/bin/com/connor/mdbksplm/creatematter/CreateMatterDialog$1.class b/bin/com/connor/mdbksplm/creatematter/CreateMatterDialog$1.class new file mode 100644 index 0000000..cc58ba2 Binary files /dev/null and b/bin/com/connor/mdbksplm/creatematter/CreateMatterDialog$1.class differ diff --git a/bin/com/connor/mdbksplm/creatematter/CreateMatterDialog$2.class b/bin/com/connor/mdbksplm/creatematter/CreateMatterDialog$2.class new file mode 100644 index 0000000..62d1a52 Binary files /dev/null and b/bin/com/connor/mdbksplm/creatematter/CreateMatterDialog$2.class differ diff --git a/bin/com/connor/mdbksplm/creatematter/CreateMatterDialog$3.class b/bin/com/connor/mdbksplm/creatematter/CreateMatterDialog$3.class new file mode 100644 index 0000000..3ae643c Binary files /dev/null and b/bin/com/connor/mdbksplm/creatematter/CreateMatterDialog$3.class differ diff --git a/bin/com/connor/mdbksplm/creatematter/CreateMatterDialog.class b/bin/com/connor/mdbksplm/creatematter/CreateMatterDialog.class new file mode 100644 index 0000000..723baf0 Binary files /dev/null and b/bin/com/connor/mdbksplm/creatematter/CreateMatterDialog.class differ diff --git a/bin/com/connor/mdbksplm/creatematter/CreateMatterHandler.class b/bin/com/connor/mdbksplm/creatematter/CreateMatterHandler.class new file mode 100644 index 0000000..47e59e5 Binary files /dev/null and b/bin/com/connor/mdbksplm/creatematter/CreateMatterHandler.class differ diff --git a/bin/com/connor/mdbksplm/creatematter/MapComboBox.class b/bin/com/connor/mdbksplm/creatematter/MapComboBox.class new file mode 100644 index 0000000..f92dc0b Binary files /dev/null and b/bin/com/connor/mdbksplm/creatematter/MapComboBox.class differ diff --git a/bin/com/connor/mdbksplm/creatematter/MultiComboBox$MultiPopup$1.class b/bin/com/connor/mdbksplm/creatematter/MultiComboBox$MultiPopup$1.class new file mode 100644 index 0000000..bcc6c99 Binary files /dev/null and b/bin/com/connor/mdbksplm/creatematter/MultiComboBox$MultiPopup$1.class differ diff --git a/bin/com/connor/mdbksplm/creatematter/MultiComboBox$MultiPopup.class b/bin/com/connor/mdbksplm/creatematter/MultiComboBox$MultiPopup.class new file mode 100644 index 0000000..c963b42 Binary files /dev/null and b/bin/com/connor/mdbksplm/creatematter/MultiComboBox$MultiPopup.class differ diff --git a/bin/com/connor/mdbksplm/creatematter/MultiComboBox.class b/bin/com/connor/mdbksplm/creatematter/MultiComboBox.class new file mode 100644 index 0000000..0ef832b Binary files /dev/null and b/bin/com/connor/mdbksplm/creatematter/MultiComboBox.class differ diff --git a/bin/com/connor/mdbksplm/creatematter/MyXmlUtil.class b/bin/com/connor/mdbksplm/creatematter/MyXmlUtil.class new file mode 100644 index 0000000..c4fa9ca Binary files /dev/null and b/bin/com/connor/mdbksplm/creatematter/MyXmlUtil.class differ diff --git a/bin/com/connor/mdbksplm/creatematter/ReadXmlFileToString.class b/bin/com/connor/mdbksplm/creatematter/ReadXmlFileToString.class new file mode 100644 index 0000000..1208ba3 Binary files /dev/null and b/bin/com/connor/mdbksplm/creatematter/ReadXmlFileToString.class differ diff --git a/bin/com/connor/mdbksplm/dbomtombom/DbomTransitionToMbomCommand$1.class b/bin/com/connor/mdbksplm/dbomtombom/DbomTransitionToMbomCommand$1.class new file mode 100644 index 0000000..93e7298 Binary files /dev/null and b/bin/com/connor/mdbksplm/dbomtombom/DbomTransitionToMbomCommand$1.class differ diff --git a/bin/com/connor/mdbksplm/dbomtombom/DbomTransitionToMbomCommand.class b/bin/com/connor/mdbksplm/dbomtombom/DbomTransitionToMbomCommand.class new file mode 100644 index 0000000..a5dfafd Binary files /dev/null and b/bin/com/connor/mdbksplm/dbomtombom/DbomTransitionToMbomCommand.class differ diff --git a/bin/com/connor/mdbksplm/dbomtombom/DbomTransitionToMbomDialog.class b/bin/com/connor/mdbksplm/dbomtombom/DbomTransitionToMbomDialog.class new file mode 100644 index 0000000..82e2ecc Binary files /dev/null and b/bin/com/connor/mdbksplm/dbomtombom/DbomTransitionToMbomDialog.class differ diff --git a/bin/com/connor/mdbksplm/dbomtombom/DbomTransitionToMbomHandler.class b/bin/com/connor/mdbksplm/dbomtombom/DbomTransitionToMbomHandler.class new file mode 100644 index 0000000..5342945 Binary files /dev/null and b/bin/com/connor/mdbksplm/dbomtombom/DbomTransitionToMbomHandler.class differ diff --git a/bin/com/connor/mdbksplm/dbomtombom/JTreeTable.class b/bin/com/connor/mdbksplm/dbomtombom/JTreeTable.class new file mode 100644 index 0000000..0c91100 Binary files /dev/null and b/bin/com/connor/mdbksplm/dbomtombom/JTreeTable.class differ diff --git a/bin/com/connor/mdbksplm/dbomtombom/JTreeTableModel.class b/bin/com/connor/mdbksplm/dbomtombom/JTreeTableModel.class new file mode 100644 index 0000000..c32a422 Binary files /dev/null and b/bin/com/connor/mdbksplm/dbomtombom/JTreeTableModel.class differ diff --git a/bin/com/connor/mdbksplm/dbomtombom/NodeBean.class b/bin/com/connor/mdbksplm/dbomtombom/NodeBean.class new file mode 100644 index 0000000..47965c5 Binary files /dev/null and b/bin/com/connor/mdbksplm/dbomtombom/NodeBean.class differ diff --git a/bin/com/connor/mdbksplm/dbomtombom/TableCellCheckboxRenderer.class b/bin/com/connor/mdbksplm/dbomtombom/TableCellCheckboxRenderer.class new file mode 100644 index 0000000..fe7b860 Binary files /dev/null and b/bin/com/connor/mdbksplm/dbomtombom/TableCellCheckboxRenderer.class differ diff --git a/bin/com/connor/mdbksplm/designassignment/DesignAssignmentDialog.class b/bin/com/connor/mdbksplm/designassignment/DesignAssignmentDialog.class new file mode 100644 index 0000000..2b89d66 Binary files /dev/null and b/bin/com/connor/mdbksplm/designassignment/DesignAssignmentDialog.class differ diff --git a/bin/com/connor/mdbksplm/handlers/SampleHandler.class b/bin/com/connor/mdbksplm/handlers/SampleHandler.class new file mode 100644 index 0000000..6b74664 Binary files /dev/null and b/bin/com/connor/mdbksplm/handlers/SampleHandler.class differ diff --git a/bin/com/connor/mdbksplm/projecttaskban/ProjectTask.class b/bin/com/connor/mdbksplm/projecttaskban/ProjectTask.class new file mode 100644 index 0000000..5f99e05 Binary files /dev/null and b/bin/com/connor/mdbksplm/projecttaskban/ProjectTask.class differ diff --git a/bin/com/connor/mdbksplm/projecttaskban/ProjectTaskDialog$1.class b/bin/com/connor/mdbksplm/projecttaskban/ProjectTaskDialog$1.class new file mode 100644 index 0000000..b04bd4a Binary files /dev/null and b/bin/com/connor/mdbksplm/projecttaskban/ProjectTaskDialog$1.class differ diff --git a/bin/com/connor/mdbksplm/projecttaskban/ProjectTaskDialog$2.class b/bin/com/connor/mdbksplm/projecttaskban/ProjectTaskDialog$2.class new file mode 100644 index 0000000..4feaa2f Binary files /dev/null and b/bin/com/connor/mdbksplm/projecttaskban/ProjectTaskDialog$2.class differ diff --git a/bin/com/connor/mdbksplm/projecttaskban/ProjectTaskDialog$3.class b/bin/com/connor/mdbksplm/projecttaskban/ProjectTaskDialog$3.class new file mode 100644 index 0000000..9989a74 Binary files /dev/null and b/bin/com/connor/mdbksplm/projecttaskban/ProjectTaskDialog$3.class differ diff --git a/bin/com/connor/mdbksplm/projecttaskban/ProjectTaskDialog$4.class b/bin/com/connor/mdbksplm/projecttaskban/ProjectTaskDialog$4.class new file mode 100644 index 0000000..269f139 Binary files /dev/null and b/bin/com/connor/mdbksplm/projecttaskban/ProjectTaskDialog$4.class differ diff --git a/bin/com/connor/mdbksplm/projecttaskban/ProjectTaskDialog$5.class b/bin/com/connor/mdbksplm/projecttaskban/ProjectTaskDialog$5.class new file mode 100644 index 0000000..ff0d860 Binary files /dev/null and b/bin/com/connor/mdbksplm/projecttaskban/ProjectTaskDialog$5.class differ diff --git a/bin/com/connor/mdbksplm/projecttaskban/ProjectTaskDialog$6.class b/bin/com/connor/mdbksplm/projecttaskban/ProjectTaskDialog$6.class new file mode 100644 index 0000000..6b8ce9a Binary files /dev/null and b/bin/com/connor/mdbksplm/projecttaskban/ProjectTaskDialog$6.class differ diff --git a/bin/com/connor/mdbksplm/projecttaskban/ProjectTaskDialog$7.class b/bin/com/connor/mdbksplm/projecttaskban/ProjectTaskDialog$7.class new file mode 100644 index 0000000..7e91dc6 Binary files /dev/null and b/bin/com/connor/mdbksplm/projecttaskban/ProjectTaskDialog$7.class differ diff --git a/bin/com/connor/mdbksplm/projecttaskban/ProjectTaskDialog.class b/bin/com/connor/mdbksplm/projecttaskban/ProjectTaskDialog.class new file mode 100644 index 0000000..affcd09 Binary files /dev/null and b/bin/com/connor/mdbksplm/projecttaskban/ProjectTaskDialog.class differ diff --git a/bin/com/connor/mdbksplm/propertytowe/PropertyToWordOrExcelCommand.class b/bin/com/connor/mdbksplm/propertytowe/PropertyToWordOrExcelCommand.class new file mode 100644 index 0000000..2703f89 Binary files /dev/null and b/bin/com/connor/mdbksplm/propertytowe/PropertyToWordOrExcelCommand.class differ diff --git a/bin/com/connor/mdbksplm/propertytowe/PropertyToWordOrExcelOperation.class b/bin/com/connor/mdbksplm/propertytowe/PropertyToWordOrExcelOperation.class new file mode 100644 index 0000000..ee26a58 Binary files /dev/null and b/bin/com/connor/mdbksplm/propertytowe/PropertyToWordOrExcelOperation.class differ diff --git a/bin/com/connor/mdbksplm/propertytowe/WordUtils.class b/bin/com/connor/mdbksplm/propertytowe/WordUtils.class new file mode 100644 index 0000000..3afc979 Binary files /dev/null and b/bin/com/connor/mdbksplm/propertytowe/WordUtils.class differ diff --git a/bin/com/connor/mdbksplm/treamlist/CNProperty.class b/bin/com/connor/mdbksplm/treamlist/CNProperty.class new file mode 100644 index 0000000..baa5371 Binary files /dev/null and b/bin/com/connor/mdbksplm/treamlist/CNProperty.class differ diff --git a/bin/com/connor/mdbksplm/treamlist/FormCheckUtil.class b/bin/com/connor/mdbksplm/treamlist/FormCheckUtil.class new file mode 100644 index 0000000..d42fdb2 Binary files /dev/null and b/bin/com/connor/mdbksplm/treamlist/FormCheckUtil.class differ diff --git a/bin/com/connor/mdbksplm/util/BusyLabelDemo.class b/bin/com/connor/mdbksplm/util/BusyLabelDemo.class new file mode 100644 index 0000000..f4c455a Binary files /dev/null and b/bin/com/connor/mdbksplm/util/BusyLabelDemo.class differ diff --git a/bin/com/connor/mdbksplm/util/ConnorUtils.class b/bin/com/connor/mdbksplm/util/ConnorUtils.class new file mode 100644 index 0000000..61ecc27 Binary files /dev/null and b/bin/com/connor/mdbksplm/util/ConnorUtils.class differ diff --git a/bin/com/connor/mdbksplm/util/DeepCopy.class b/bin/com/connor/mdbksplm/util/DeepCopy.class new file mode 100644 index 0000000..e91ca9e Binary files /dev/null and b/bin/com/connor/mdbksplm/util/DeepCopy.class differ diff --git a/bin/com/connor/mdbksplm/util/MyFileFilter.class b/bin/com/connor/mdbksplm/util/MyFileFilter.class new file mode 100644 index 0000000..7703d84 Binary files /dev/null and b/bin/com/connor/mdbksplm/util/MyFileFilter.class differ diff --git a/bin/com/connor/mdbksplm/util/ProgressBar$1.class b/bin/com/connor/mdbksplm/util/ProgressBar$1.class new file mode 100644 index 0000000..af30d44 Binary files /dev/null and b/bin/com/connor/mdbksplm/util/ProgressBar$1.class differ diff --git a/bin/com/connor/mdbksplm/util/ProgressBar$TaskThread.class b/bin/com/connor/mdbksplm/util/ProgressBar$TaskThread.class new file mode 100644 index 0000000..c6a4acb Binary files /dev/null and b/bin/com/connor/mdbksplm/util/ProgressBar$TaskThread.class differ diff --git a/bin/com/connor/mdbksplm/util/ProgressBar.class b/bin/com/connor/mdbksplm/util/ProgressBar.class new file mode 100644 index 0000000..6a54587 Binary files /dev/null and b/bin/com/connor/mdbksplm/util/ProgressBar.class differ diff --git a/bin/com/connor/mdbksplm/util/ProgressBarDemo.class b/bin/com/connor/mdbksplm/util/ProgressBarDemo.class new file mode 100644 index 0000000..013ff96 Binary files /dev/null and b/bin/com/connor/mdbksplm/util/ProgressBarDemo.class differ diff --git a/bin/com/connor/mdbksplm/util/ProgressBarThread.class b/bin/com/connor/mdbksplm/util/ProgressBarThread.class new file mode 100644 index 0000000..63821d1 Binary files /dev/null and b/bin/com/connor/mdbksplm/util/ProgressBarThread.class differ diff --git a/bin/com/connor/mdbksplm/util/S8ProgressBar$1.class b/bin/com/connor/mdbksplm/util/S8ProgressBar$1.class new file mode 100644 index 0000000..4b098a7 Binary files /dev/null and b/bin/com/connor/mdbksplm/util/S8ProgressBar$1.class differ diff --git a/bin/com/connor/mdbksplm/util/S8ProgressBar$TaskThread.class b/bin/com/connor/mdbksplm/util/S8ProgressBar$TaskThread.class new file mode 100644 index 0000000..dbb17ef Binary files /dev/null and b/bin/com/connor/mdbksplm/util/S8ProgressBar$TaskThread.class differ diff --git a/bin/com/connor/mdbksplm/util/S8ProgressBar.class b/bin/com/connor/mdbksplm/util/S8ProgressBar.class new file mode 100644 index 0000000..530d51e Binary files /dev/null and b/bin/com/connor/mdbksplm/util/S8ProgressBar.class differ diff --git a/bin/com/connor/mdbksplm/util/S8ProgressBarThread.class b/bin/com/connor/mdbksplm/util/S8ProgressBarThread.class new file mode 100644 index 0000000..2e7fe98 Binary files /dev/null and b/bin/com/connor/mdbksplm/util/S8ProgressBarThread.class differ diff --git a/bin/com/connor/mdbksplm/util/WaitingDialog.class b/bin/com/connor/mdbksplm/util/WaitingDialog.class new file mode 100644 index 0000000..31c3369 Binary files /dev/null and b/bin/com/connor/mdbksplm/util/WaitingDialog.class differ diff --git a/bin/com/connor/mdbksplm/zjdoccreate/JCheckBoxTree$1.class b/bin/com/connor/mdbksplm/zjdoccreate/JCheckBoxTree$1.class new file mode 100644 index 0000000..d9d9258 Binary files /dev/null and b/bin/com/connor/mdbksplm/zjdoccreate/JCheckBoxTree$1.class differ diff --git a/bin/com/connor/mdbksplm/zjdoccreate/JCheckBoxTree$CheckNode.class b/bin/com/connor/mdbksplm/zjdoccreate/JCheckBoxTree$CheckNode.class new file mode 100644 index 0000000..0f57266 Binary files /dev/null and b/bin/com/connor/mdbksplm/zjdoccreate/JCheckBoxTree$CheckNode.class differ diff --git a/bin/com/connor/mdbksplm/zjdoccreate/JCheckBoxTree$CheckRenderer$TreeLabel.class b/bin/com/connor/mdbksplm/zjdoccreate/JCheckBoxTree$CheckRenderer$TreeLabel.class new file mode 100644 index 0000000..f6e3cb4 Binary files /dev/null and b/bin/com/connor/mdbksplm/zjdoccreate/JCheckBoxTree$CheckRenderer$TreeLabel.class differ diff --git a/bin/com/connor/mdbksplm/zjdoccreate/JCheckBoxTree$CheckRenderer.class b/bin/com/connor/mdbksplm/zjdoccreate/JCheckBoxTree$CheckRenderer.class new file mode 100644 index 0000000..043d2ae Binary files /dev/null and b/bin/com/connor/mdbksplm/zjdoccreate/JCheckBoxTree$CheckRenderer.class differ diff --git a/bin/com/connor/mdbksplm/zjdoccreate/JCheckBoxTree.class b/bin/com/connor/mdbksplm/zjdoccreate/JCheckBoxTree.class new file mode 100644 index 0000000..ee63dca Binary files /dev/null and b/bin/com/connor/mdbksplm/zjdoccreate/JCheckBoxTree.class differ diff --git a/bin/com/connor/mdbksplm/zjdoccreate/TreeBean.class b/bin/com/connor/mdbksplm/zjdoccreate/TreeBean.class new file mode 100644 index 0000000..32665e7 Binary files /dev/null and b/bin/com/connor/mdbksplm/zjdoccreate/TreeBean.class differ diff --git a/bin/com/connor/mdbksplm/zjdoccreate/zjCreateDialog$1.class b/bin/com/connor/mdbksplm/zjdoccreate/zjCreateDialog$1.class new file mode 100644 index 0000000..5f3e7ac Binary files /dev/null and b/bin/com/connor/mdbksplm/zjdoccreate/zjCreateDialog$1.class differ diff --git a/bin/com/connor/mdbksplm/zjdoccreate/zjCreateDialog$2.class b/bin/com/connor/mdbksplm/zjdoccreate/zjCreateDialog$2.class new file mode 100644 index 0000000..7f1a630 Binary files /dev/null and b/bin/com/connor/mdbksplm/zjdoccreate/zjCreateDialog$2.class differ diff --git a/bin/com/connor/mdbksplm/zjdoccreate/zjCreateDialog$3.class b/bin/com/connor/mdbksplm/zjdoccreate/zjCreateDialog$3.class new file mode 100644 index 0000000..4be7e6d Binary files /dev/null and b/bin/com/connor/mdbksplm/zjdoccreate/zjCreateDialog$3.class differ diff --git a/bin/com/connor/mdbksplm/zjdoccreate/zjCreateDialog.class b/bin/com/connor/mdbksplm/zjdoccreate/zjCreateDialog.class new file mode 100644 index 0000000..6b426fa Binary files /dev/null and b/bin/com/connor/mdbksplm/zjdoccreate/zjCreateDialog.class differ diff --git a/bin/com/connor/mdbksplm/zjdoccreate/zjCreateHandler.class b/bin/com/connor/mdbksplm/zjdoccreate/zjCreateHandler.class new file mode 100644 index 0000000..7ec716e Binary files /dev/null and b/bin/com/connor/mdbksplm/zjdoccreate/zjCreateHandler.class differ diff --git a/bin/com/teamcenter/clientx/AppXCredentialManager.class b/bin/com/teamcenter/clientx/AppXCredentialManager.class new file mode 100644 index 0000000..ac66608 Binary files /dev/null and b/bin/com/teamcenter/clientx/AppXCredentialManager.class differ diff --git a/bin/com/teamcenter/clientx/AppXExceptionHandler.class b/bin/com/teamcenter/clientx/AppXExceptionHandler.class new file mode 100644 index 0000000..fd8d46e Binary files /dev/null and b/bin/com/teamcenter/clientx/AppXExceptionHandler.class differ diff --git a/bin/com/teamcenter/clientx/AppXModelEventListener.class b/bin/com/teamcenter/clientx/AppXModelEventListener.class new file mode 100644 index 0000000..4024a55 Binary files /dev/null and b/bin/com/teamcenter/clientx/AppXModelEventListener.class differ diff --git a/bin/com/teamcenter/clientx/AppXPartialErrorListener.class b/bin/com/teamcenter/clientx/AppXPartialErrorListener.class new file mode 100644 index 0000000..1def491 Binary files /dev/null and b/bin/com/teamcenter/clientx/AppXPartialErrorListener.class differ diff --git a/bin/com/teamcenter/clientx/AppXRequestListener.class b/bin/com/teamcenter/clientx/AppXRequestListener.class new file mode 100644 index 0000000..f61ec97 Binary files /dev/null and b/bin/com/teamcenter/clientx/AppXRequestListener.class differ diff --git a/bin/com/teamcenter/clientx/AppXSession.class b/bin/com/teamcenter/clientx/AppXSession.class new file mode 100644 index 0000000..bb29374 Binary files /dev/null and b/bin/com/teamcenter/clientx/AppXSession.class differ diff --git a/bin/com/teamcenter/rac/stylesheet/DesignAssignmentDialog.class b/bin/com/teamcenter/rac/stylesheet/DesignAssignmentDialog.class new file mode 100644 index 0000000..07fef5c Binary files /dev/null and b/bin/com/teamcenter/rac/stylesheet/DesignAssignmentDialog.class differ diff --git a/bin/com/teamcenter/rac/stylesheet/HandoverList$1.class b/bin/com/teamcenter/rac/stylesheet/HandoverList$1.class new file mode 100644 index 0000000..754b729 Binary files /dev/null and b/bin/com/teamcenter/rac/stylesheet/HandoverList$1.class differ diff --git a/bin/com/teamcenter/rac/stylesheet/HandoverList$10.class b/bin/com/teamcenter/rac/stylesheet/HandoverList$10.class new file mode 100644 index 0000000..cef0053 Binary files /dev/null and b/bin/com/teamcenter/rac/stylesheet/HandoverList$10.class differ diff --git a/bin/com/teamcenter/rac/stylesheet/HandoverList$11.class b/bin/com/teamcenter/rac/stylesheet/HandoverList$11.class new file mode 100644 index 0000000..eb93dd0 Binary files /dev/null and b/bin/com/teamcenter/rac/stylesheet/HandoverList$11.class differ diff --git a/bin/com/teamcenter/rac/stylesheet/HandoverList$12.class b/bin/com/teamcenter/rac/stylesheet/HandoverList$12.class new file mode 100644 index 0000000..4a02e71 Binary files /dev/null and b/bin/com/teamcenter/rac/stylesheet/HandoverList$12.class differ diff --git a/bin/com/teamcenter/rac/stylesheet/HandoverList$13.class b/bin/com/teamcenter/rac/stylesheet/HandoverList$13.class new file mode 100644 index 0000000..da7925b Binary files /dev/null and b/bin/com/teamcenter/rac/stylesheet/HandoverList$13.class differ diff --git a/bin/com/teamcenter/rac/stylesheet/HandoverList$14.class b/bin/com/teamcenter/rac/stylesheet/HandoverList$14.class new file mode 100644 index 0000000..a7272b8 Binary files /dev/null and b/bin/com/teamcenter/rac/stylesheet/HandoverList$14.class differ diff --git a/bin/com/teamcenter/rac/stylesheet/HandoverList$15.class b/bin/com/teamcenter/rac/stylesheet/HandoverList$15.class new file mode 100644 index 0000000..d2a75b0 Binary files /dev/null and b/bin/com/teamcenter/rac/stylesheet/HandoverList$15.class differ diff --git a/bin/com/teamcenter/rac/stylesheet/HandoverList$16.class b/bin/com/teamcenter/rac/stylesheet/HandoverList$16.class new file mode 100644 index 0000000..d9383fc Binary files /dev/null and b/bin/com/teamcenter/rac/stylesheet/HandoverList$16.class differ diff --git a/bin/com/teamcenter/rac/stylesheet/HandoverList$17.class b/bin/com/teamcenter/rac/stylesheet/HandoverList$17.class new file mode 100644 index 0000000..253b4ad Binary files /dev/null and b/bin/com/teamcenter/rac/stylesheet/HandoverList$17.class differ diff --git a/bin/com/teamcenter/rac/stylesheet/HandoverList$18.class b/bin/com/teamcenter/rac/stylesheet/HandoverList$18.class new file mode 100644 index 0000000..dd51932 Binary files /dev/null and b/bin/com/teamcenter/rac/stylesheet/HandoverList$18.class differ diff --git a/bin/com/teamcenter/rac/stylesheet/HandoverList$19.class b/bin/com/teamcenter/rac/stylesheet/HandoverList$19.class new file mode 100644 index 0000000..e7e0e72 Binary files /dev/null and b/bin/com/teamcenter/rac/stylesheet/HandoverList$19.class differ diff --git a/bin/com/teamcenter/rac/stylesheet/HandoverList$2.class b/bin/com/teamcenter/rac/stylesheet/HandoverList$2.class new file mode 100644 index 0000000..6545843 Binary files /dev/null and b/bin/com/teamcenter/rac/stylesheet/HandoverList$2.class differ diff --git a/bin/com/teamcenter/rac/stylesheet/HandoverList$20.class b/bin/com/teamcenter/rac/stylesheet/HandoverList$20.class new file mode 100644 index 0000000..42fd783 Binary files /dev/null and b/bin/com/teamcenter/rac/stylesheet/HandoverList$20.class differ diff --git a/bin/com/teamcenter/rac/stylesheet/HandoverList$21.class b/bin/com/teamcenter/rac/stylesheet/HandoverList$21.class new file mode 100644 index 0000000..8890018 Binary files /dev/null and b/bin/com/teamcenter/rac/stylesheet/HandoverList$21.class differ diff --git a/bin/com/teamcenter/rac/stylesheet/HandoverList$22.class b/bin/com/teamcenter/rac/stylesheet/HandoverList$22.class new file mode 100644 index 0000000..65fb264 Binary files /dev/null and b/bin/com/teamcenter/rac/stylesheet/HandoverList$22.class differ diff --git a/bin/com/teamcenter/rac/stylesheet/HandoverList$23.class b/bin/com/teamcenter/rac/stylesheet/HandoverList$23.class new file mode 100644 index 0000000..4cc7e3c Binary files /dev/null and b/bin/com/teamcenter/rac/stylesheet/HandoverList$23.class differ diff --git a/bin/com/teamcenter/rac/stylesheet/HandoverList$3.class b/bin/com/teamcenter/rac/stylesheet/HandoverList$3.class new file mode 100644 index 0000000..7bbd5dd Binary files /dev/null and b/bin/com/teamcenter/rac/stylesheet/HandoverList$3.class differ diff --git a/bin/com/teamcenter/rac/stylesheet/HandoverList$4.class b/bin/com/teamcenter/rac/stylesheet/HandoverList$4.class new file mode 100644 index 0000000..1489898 Binary files /dev/null and b/bin/com/teamcenter/rac/stylesheet/HandoverList$4.class differ diff --git a/bin/com/teamcenter/rac/stylesheet/HandoverList$5.class b/bin/com/teamcenter/rac/stylesheet/HandoverList$5.class new file mode 100644 index 0000000..8f61f46 Binary files /dev/null and b/bin/com/teamcenter/rac/stylesheet/HandoverList$5.class differ diff --git a/bin/com/teamcenter/rac/stylesheet/HandoverList$6.class b/bin/com/teamcenter/rac/stylesheet/HandoverList$6.class new file mode 100644 index 0000000..8ad4f86 Binary files /dev/null and b/bin/com/teamcenter/rac/stylesheet/HandoverList$6.class differ diff --git a/bin/com/teamcenter/rac/stylesheet/HandoverList$7.class b/bin/com/teamcenter/rac/stylesheet/HandoverList$7.class new file mode 100644 index 0000000..9585dc4 Binary files /dev/null and b/bin/com/teamcenter/rac/stylesheet/HandoverList$7.class differ diff --git a/bin/com/teamcenter/rac/stylesheet/HandoverList$8.class b/bin/com/teamcenter/rac/stylesheet/HandoverList$8.class new file mode 100644 index 0000000..fae46c0 Binary files /dev/null and b/bin/com/teamcenter/rac/stylesheet/HandoverList$8.class differ diff --git a/bin/com/teamcenter/rac/stylesheet/HandoverList$9.class b/bin/com/teamcenter/rac/stylesheet/HandoverList$9.class new file mode 100644 index 0000000..e31c88e Binary files /dev/null and b/bin/com/teamcenter/rac/stylesheet/HandoverList$9.class differ diff --git a/bin/com/teamcenter/rac/stylesheet/HandoverList.class b/bin/com/teamcenter/rac/stylesheet/HandoverList.class new file mode 100644 index 0000000..de8961f Binary files /dev/null and b/bin/com/teamcenter/rac/stylesheet/HandoverList.class differ diff --git a/bin/com/teamcenter/rac/stylesheet/OTSSubmit$1.class b/bin/com/teamcenter/rac/stylesheet/OTSSubmit$1.class new file mode 100644 index 0000000..4d52a96 Binary files /dev/null and b/bin/com/teamcenter/rac/stylesheet/OTSSubmit$1.class differ diff --git a/bin/com/teamcenter/rac/stylesheet/OTSSubmit$2.class b/bin/com/teamcenter/rac/stylesheet/OTSSubmit$2.class new file mode 100644 index 0000000..62d5c2b Binary files /dev/null and b/bin/com/teamcenter/rac/stylesheet/OTSSubmit$2.class differ diff --git a/bin/com/teamcenter/rac/stylesheet/OTSSubmit$3.class b/bin/com/teamcenter/rac/stylesheet/OTSSubmit$3.class new file mode 100644 index 0000000..38f4d91 Binary files /dev/null and b/bin/com/teamcenter/rac/stylesheet/OTSSubmit$3.class differ diff --git a/bin/com/teamcenter/rac/stylesheet/OTSSubmit$4.class b/bin/com/teamcenter/rac/stylesheet/OTSSubmit$4.class new file mode 100644 index 0000000..a1f19e3 Binary files /dev/null and b/bin/com/teamcenter/rac/stylesheet/OTSSubmit$4.class differ diff --git a/bin/com/teamcenter/rac/stylesheet/OTSSubmit.class b/bin/com/teamcenter/rac/stylesheet/OTSSubmit.class new file mode 100644 index 0000000..35bac72 Binary files /dev/null and b/bin/com/teamcenter/rac/stylesheet/OTSSubmit.class differ diff --git a/bin/com/teamcenter/rac/stylesheet/PPATSubmit$1.class b/bin/com/teamcenter/rac/stylesheet/PPATSubmit$1.class new file mode 100644 index 0000000..98bb998 Binary files /dev/null and b/bin/com/teamcenter/rac/stylesheet/PPATSubmit$1.class differ diff --git a/bin/com/teamcenter/rac/stylesheet/PPATSubmit$2.class b/bin/com/teamcenter/rac/stylesheet/PPATSubmit$2.class new file mode 100644 index 0000000..922a42d Binary files /dev/null and b/bin/com/teamcenter/rac/stylesheet/PPATSubmit$2.class differ diff --git a/bin/com/teamcenter/rac/stylesheet/PPATSubmit$3.class b/bin/com/teamcenter/rac/stylesheet/PPATSubmit$3.class new file mode 100644 index 0000000..dc8a0b9 Binary files /dev/null and b/bin/com/teamcenter/rac/stylesheet/PPATSubmit$3.class differ diff --git a/bin/com/teamcenter/rac/stylesheet/PPATSubmit$4.class b/bin/com/teamcenter/rac/stylesheet/PPATSubmit$4.class new file mode 100644 index 0000000..57d7bc6 Binary files /dev/null and b/bin/com/teamcenter/rac/stylesheet/PPATSubmit$4.class differ diff --git a/bin/com/teamcenter/rac/stylesheet/PPATSubmit.class b/bin/com/teamcenter/rac/stylesheet/PPATSubmit.class new file mode 100644 index 0000000..0f10646 Binary files /dev/null and b/bin/com/teamcenter/rac/stylesheet/PPATSubmit.class differ diff --git a/bin/com/teamcenter/rac/stylesheet/TreamListDialog$1.class b/bin/com/teamcenter/rac/stylesheet/TreamListDialog$1.class new file mode 100644 index 0000000..219c8da Binary files /dev/null and b/bin/com/teamcenter/rac/stylesheet/TreamListDialog$1.class differ diff --git a/bin/com/teamcenter/rac/stylesheet/TreamListDialog$2.class b/bin/com/teamcenter/rac/stylesheet/TreamListDialog$2.class new file mode 100644 index 0000000..d41dcb6 Binary files /dev/null and b/bin/com/teamcenter/rac/stylesheet/TreamListDialog$2.class differ diff --git a/bin/com/teamcenter/rac/stylesheet/TreamListDialog$3.class b/bin/com/teamcenter/rac/stylesheet/TreamListDialog$3.class new file mode 100644 index 0000000..1a033c3 Binary files /dev/null and b/bin/com/teamcenter/rac/stylesheet/TreamListDialog$3.class differ diff --git a/bin/com/teamcenter/rac/stylesheet/TreamListDialog$4.class b/bin/com/teamcenter/rac/stylesheet/TreamListDialog$4.class new file mode 100644 index 0000000..79c3203 Binary files /dev/null and b/bin/com/teamcenter/rac/stylesheet/TreamListDialog$4.class differ diff --git a/bin/com/teamcenter/rac/stylesheet/TreamListDialog$5.class b/bin/com/teamcenter/rac/stylesheet/TreamListDialog$5.class new file mode 100644 index 0000000..0ee426c Binary files /dev/null and b/bin/com/teamcenter/rac/stylesheet/TreamListDialog$5.class differ diff --git a/bin/com/teamcenter/rac/stylesheet/TreamListDialog$6.class b/bin/com/teamcenter/rac/stylesheet/TreamListDialog$6.class new file mode 100644 index 0000000..dded642 Binary files /dev/null and b/bin/com/teamcenter/rac/stylesheet/TreamListDialog$6.class differ diff --git a/bin/com/teamcenter/rac/stylesheet/TreamListDialog$7.class b/bin/com/teamcenter/rac/stylesheet/TreamListDialog$7.class new file mode 100644 index 0000000..509d229 Binary files /dev/null and b/bin/com/teamcenter/rac/stylesheet/TreamListDialog$7.class differ diff --git a/bin/com/teamcenter/rac/stylesheet/TreamListDialog.class b/bin/com/teamcenter/rac/stylesheet/TreamListDialog.class new file mode 100644 index 0000000..4cc975f Binary files /dev/null and b/bin/com/teamcenter/rac/stylesheet/TreamListDialog.class differ diff --git a/bin/com/teamcenter/rac/stylesheet/md.png b/bin/com/teamcenter/rac/stylesheet/md.png new file mode 100644 index 0000000..9015273 Binary files /dev/null and b/bin/com/teamcenter/rac/stylesheet/md.png differ diff --git a/bin/com/teamcenter/rac/stylesheet/stylesheet_user.properties b/bin/com/teamcenter/rac/stylesheet/stylesheet_user.properties new file mode 100644 index 0000000..59dda3e --- /dev/null +++ b/bin/com/teamcenter/rac/stylesheet/stylesheet_user.properties @@ -0,0 +1,8 @@ +#LB2_JSBGRevisionMaster.FORMJAVARENDERING=com.teamcenter.rac.stylesheet.TechnicalChange +#LB2_GYBGRevisionMaster.FORMJAVARENDERING=com.teamcenter.rac.stylesheet.CarftChange +#LB2_RJBGDRevisionMaster.FORMJAVARENDERING=com.teamcenter.rac.stylesheet.TecChange +MT8_XZMDDocRevisionMaster.FORMJAVARENDERING=com.teamcenter.rac.stylesheet.TreamListDialog +MT8_SJRWSDocRevisionMaster.FORMJAVARENDERING=com.teamcenter.rac.stylesheet.DesignAssignmentDialog +MT8_OTSQDDocRevisionMaster.FORMJAVARENDERING=com.teamcenter.rac.stylesheet.OTSSubmit +MT8_PPAPQDDocRevisionMaster.FORMJAVARENDERING=com.teamcenter.rac.stylesheet.PPATSubmit +MT8_YJQDDocRevisionMaster.FORMJAVARENDERING=com.teamcenter.rac.stylesheet.HandoverList \ No newline at end of file diff --git a/bin/test14/Test14Dialog.class b/bin/test14/Test14Dialog.class new file mode 100644 index 0000000..8417db3 Binary files /dev/null and b/bin/test14/Test14Dialog.class differ diff --git a/bin/test14/test14Handler.class b/bin/test14/test14Handler.class new file mode 100644 index 0000000..8d95465 Binary files /dev/null and b/bin/test14/test14Handler.class differ diff --git a/build.properties b/build.properties new file mode 100644 index 0000000..9a25d88 --- /dev/null +++ b/build.properties @@ -0,0 +1,501 @@ +source.. = src/ +output.. = bin/ +bin.includes = plugin.xml,\ + META-INF/,\ + .,\ + icons/,\ + lib/swingx-1.6.1.jar,\ + lib/aspose-words-17.4.0-jdk16.jar,\ + lib/commons-collections4-4.1.jar,\ + lib/xmlbeans-2.6.0.jar,\ + lib/jdom2-2.0.6.jar,\ + src/com/teamcenter/rac/stylesheet/,\ + lib/mssql-jdbc-8.2.2.jre8.jar,\ + lib2/libs/com.teamcenter.rac.external_14000.2.0/ApplicationRegistryClient.jar,\ + lib2/libs/com.teamcenter.rac.external_14000.2.0/commons-httpclient-contrib-3.1.jar,\ + lib2/libs/com.teamcenter.rac.external_14000.2.0/fccclient.jar,\ + lib2/libs/com.teamcenter.rac.external_14000.2.0/fscclient.jar,\ + lib2/libs/com.teamcenter.rac.external_14000.2.0/jakarta.activation.jar,\ + lib2/libs/com.teamcenter.rac.external_14000.2.0/jakarta.xml.bind-api.jar,\ + lib2/libs/com.teamcenter.rac.external_14000.2.0/jaxb-impl.jar,\ + lib2/libs/com.teamcenter.rac.external_14000.2.0/jgraph.jar,\ + lib2/libs/com.teamcenter.rac.external_14000.2.0/mail.jar,\ + lib2/libs/com.teamcenter.rac.external_14000.2.0/soap.jar,\ + lib2/libs/com.teamcenter.rac.external_14000.2.0/TcDoclet.jar,\ + lib2/libs/com.teamcenter.rac.external_14000.2.0/tcserverjavabinding.jar,\ + lib2/libs/Ads0SoaAdsFoundationLoose_14000.2.0.jar,\ + lib2/libs/Ads0SoaAdsFoundationRac_14000.2.0.jar,\ + lib2/libs/Ads0SoaAdsFoundationStrong_14000.2.0.jar,\ + lib2/libs/Aed0SoaStrongModelAutomationElectricDesign_14000.2.0.jar,\ + lib2/libs/Ap0SoaStrongModelAdvancePlanner_14000.2.0.jar,\ + lib2/libs/Apb0SoaStrongModelAttrParmBase_14000.2.0.jar,\ + lib2/libs/Aps0SoaStrongModelApsCore_14000.2.0.jar,\ + lib2/libs/As0SoaAspCoreLoose_14000.2.0.jar,\ + lib2/libs/As0SoaAspCoreRac_14000.2.0.jar,\ + lib2/libs/As0SoaAspCoreStrong_14000.2.0.jar,\ + lib2/libs/As0SoaStrongModelAutoSupplier_14000.2.0.jar,\ + lib2/libs/Asp0SoaAspectLoose_14000.2.0.jar,\ + lib2/libs/Asp0SoaAspectRac_14000.2.0.jar,\ + lib2/libs/Asp0SoaAspectStrong_14000.2.0.jar,\ + lib2/libs/Asp0SoaStrongModelAspect_14000.2.0.jar,\ + lib2/libs/Att0SoaAttrTargetMgmtLoose_14000.2.0.jar,\ + lib2/libs/Att0SoaAttrTargetMgmtRac_14000.2.0.jar,\ + lib2/libs/Att0SoaAttrTargetMgmtStrong_14000.2.0.jar,\ + lib2/libs/Att0SoaStrongModelAttrTargetMgmt_14000.2.0.jar,\ + lib2/libs/Bdo0SoaStrongModelBranchDataOrganization_14000.2.0.jar,\ + lib2/libs/Bhv0SoaBranchFoundationLoose_14000.2.0.jar,\ + lib2/libs/Bhv0SoaBranchFoundationRac_14000.2.0.jar,\ + lib2/libs/Bhv0SoaBranchFoundationStrong_14000.2.0.jar,\ + lib2/libs/Bhv0SoaStrongModelBranchfoundation_14000.2.0.jar,\ + lib2/libs/Bom0SoaBomCoreLoose_14000.2.0.jar,\ + lib2/libs/Bom0SoaBomCoreRac_14000.2.0.jar,\ + lib2/libs/Bom0SoaBomCoreStrong_14000.2.0.jar,\ + lib2/libs/Bom0SoaStrongModelBomManagement_14000.2.0.jar,\ + lib2/libs/CAE0SoaSimProcLoose_14000.2.0.jar,\ + lib2/libs/CAE0SoaSimProcRac_14000.2.0.jar,\ + lib2/libs/CAE0SoaSimProcStrong_14000.2.0.jar,\ + lib2/libs/CAE0SoaStrongModelSimProc_14000.2.0.jar,\ + lib2/libs/Cba1SoaCbaExtLoose_14000.2.0.jar,\ + lib2/libs/Cba1SoaCbaExtRac_14000.2.0.jar,\ + lib2/libs/Cba1SoaCbaExtStrong_14000.2.0.jar,\ + lib2/libs/Cbm0SoaColorBomPmmLoose_14000.2.0.jar,\ + lib2/libs/Cbm0SoaColorBomPmmRac_14000.2.0.jar,\ + lib2/libs/Cbm0SoaColorBomPmmStrong_14000.2.0.jar,\ + lib2/libs/Cbm0SoaStrongModelColorBomPmm_14000.2.0.jar,\ + lib2/libs/Cdm0SoaContractManagementLoose_14000.2.0.jar,\ + lib2/libs/Cdm0SoaContractManagementRac_14000.2.0.jar,\ + lib2/libs/Cdm0SoaContractManagementStrong_14000.2.0.jar,\ + lib2/libs/Cfg0SoaConfiguratorLoose_14000.2.0.jar,\ + lib2/libs/Cfg0SoaConfiguratorRac_14000.2.0.jar,\ + lib2/libs/Cfg0SoaConfiguratorStrong_14000.2.0.jar,\ + lib2/libs/Cfg0SoaStrongModelConfigurator_14000.2.0.jar,\ + lib2/libs/Cfg1SoaStrongModelConfigurator_14000.2.0.jar,\ + lib2/libs/Cfp0SoaStrongModelFeaturePlanning_14000.2.0.jar,\ + lib2/libs/Cip0SoaStrongModelControlInSPPlan_14000.2.0.jar,\ + lib2/libs/Civ0SoaContMgmtS1000D40Loose_14000.2.0.jar,\ + lib2/libs/Civ0SoaContMgmtS1000D40Rac_14000.2.0.jar,\ + lib2/libs/Civ0SoaContMgmtS1000D40Strong_14000.2.0.jar,\ + lib2/libs/Cla0SoaClassificationCommonLoose_14000.2.0.jar,\ + lib2/libs/Cla0SoaClassificationCommonRac_14000.2.0.jar,\ + lib2/libs/Cla0SoaClassificationCommonStrong_14000.2.0.jar,\ + lib2/libs/Clr0SoaColorAppearanceLoose_14000.2.0.jar,\ + lib2/libs/Clr0SoaColorAppearanceRac_14000.2.0.jar,\ + lib2/libs/Clr0SoaColorAppearanceStrong_14000.2.0.jar,\ + lib2/libs/Clr0SoaStrongModelColorAppearance_14000.2.0.jar,\ + lib2/libs/Clr1SoaStrongModelColorRule_14000.2.0.jar,\ + lib2/libs/Cls0SoaClassificationCoreLoose_14000.2.0.jar,\ + lib2/libs/Cls0SoaClassificationCoreRac_14000.2.0.jar,\ + lib2/libs/Cls0SoaClassificationCoreStrong_14000.2.0.jar,\ + lib2/libs/com.teamcenter.rac.aif.registryeditor_14000.2.0.jar,\ + lib2/libs/com.teamcenter.rac.aifrcp_14000.2.0.jar,\ + lib2/libs/com.teamcenter.rac.kernel_14000.2.0.jar,\ + lib2/libs/com.teamcenter.rac.kernel.testing_14000.2.0.jar,\ + lib2/libs/com.teamcenter.rac.util_14000.2.0.jar,\ + lib2/libs/com.teamcenter.rac.util.testing_14000.2.0.jar,\ + lib2/libs/commons-codec-1.11.jar,\ + lib2/libs/commons-logging-1.2.jar,\ + lib2/libs/Cp0SoaStrongModelComposites_14000.2.0.jar,\ + lib2/libs/CPA0SoaStrongModelCapaDataModel_14000.2.0.jar,\ + lib2/libs/Cpd0SoaCpdCoreLoose_14000.2.0.jar,\ + lib2/libs/Cpd0SoaCpdCoreRac_14000.2.0.jar,\ + lib2/libs/Cpd0SoaCpdCoreStrong_14000.2.0.jar,\ + lib2/libs/Crf0SoaStrongModelCprFoundation_14000.2.0.jar,\ + lib2/libs/Crt0SoaStrongModelValidationContract_14000.2.0.jar,\ + lib2/libs/Crt0SoaValidationContractLoose_14000.2.0.jar,\ + lib2/libs/Crt0SoaValidationContractRac_14000.2.0.jar,\ + lib2/libs/Crt0SoaValidationContractStrong_14000.2.0.jar,\ + lib2/libs/Dia0SoaDiagrammingLoose_14000.2.0.jar,\ + lib2/libs/Dia0SoaDiagrammingStrong_14000.2.0.jar,\ + lib2/libs/Ebm0SoaStrongModelEnterpriseBOM_14000.2.0.jar,\ + lib2/libs/Ebm9SoaStrongModelCustomebom_14000.2.0.jar,\ + lib2/libs/Ec0SoaStrongModelEngChange_14000.2.0.jar,\ + lib2/libs/Eda0SoaEDMDCollabLoose_14000.2.0.jar,\ + lib2/libs/Eda0SoaEDMDCollabRac_14000.2.0.jar,\ + lib2/libs/Eda0SoaEDMDCollabStrong_14000.2.0.jar,\ + lib2/libs/Esm0SoaESMBaseLoose_14000.2.0.jar,\ + lib2/libs/Esm0SoaESMBaseRac_14000.2.0.jar,\ + lib2/libs/Esm0SoaESMBaseStrong_14000.2.0.jar,\ + lib2/libs/Esw0SoaStrongModelEsmgmt_14000.2.0.jar,\ + lib2/libs/fccclient.jar,\ + lib2/libs/Fdp0SoaFourDPlanningLoose_14000.2.0.jar,\ + lib2/libs/Fdp0SoaFourDPlanningRac_14000.2.0.jar,\ + lib2/libs/Fdp0SoaFourDPlanningStrong_14000.2.0.jar,\ + lib2/libs/Fdp0SoaStrongModelFourDPlanning_14000.2.0.jar,\ + lib2/libs/Fha0SoaStrongModelFHAnalysis_14000.2.0.jar,\ + lib2/libs/fmsticket.jar,\ + lib2/libs/Fnd0SoaAuditManagerLoose_14000.2.0.jar,\ + lib2/libs/Fnd0SoaAuditManagerRac_14000.2.0.jar,\ + lib2/libs/Fnd0SoaAuditManagerStrong_14000.2.0.jar,\ + lib2/libs/Fnd0SoaConfigFilterCriteriaLoose_14000.2.0.jar,\ + lib2/libs/Fnd0SoaConfigFilterCriteriaRac_14000.2.0.jar,\ + lib2/libs/Fnd0SoaConfigFilterCriteriaStrong_14000.2.0.jar,\ + lib2/libs/Fnd0SoaDiagrammingLoose_14000.2.0.jar,\ + lib2/libs/Fnd0SoaDiagrammingRac_14000.2.0.jar,\ + lib2/libs/Fnd0SoaDiagrammingStrong_14000.2.0.jar,\ + lib2/libs/Fnd0SoaEditContextLoose_14000.2.0.jar,\ + lib2/libs/Fnd0SoaEditContextRac_14000.2.0.jar,\ + lib2/libs/Fnd0SoaEditContextStrong_14000.2.0.jar,\ + lib2/libs/Fnd0SoaNotificationLoose_14000.2.0.jar,\ + lib2/libs/Fnd0SoaNotificationRac_14000.2.0.jar,\ + lib2/libs/Fnd0SoaNotificationStrong_14000.2.0.jar,\ + lib2/libs/Fnd0SoaParticipantLoose_14000.2.0.jar,\ + lib2/libs/Fnd0SoaParticipantRac_14000.2.0.jar,\ + lib2/libs/Fnd0SoaParticipantStrong_14000.2.0.jar,\ + lib2/libs/Fnd0SoaQualificationLoose_14000.2.0.jar,\ + lib2/libs/Fnd0SoaQualificationRac_14000.2.0.jar,\ + lib2/libs/Fnd0SoaQualificationStrong_14000.2.0.jar,\ + lib2/libs/Fnd0SoaUiConfigLoose_14000.2.0.jar,\ + lib2/libs/Fnd0SoaUiConfigStrong_14000.2.0.jar,\ + lib2/libs/Fnd0SoaWProxyLoose_14000.2.0.jar,\ + lib2/libs/Fnd0SoaWProxyRac_14000.2.0.jar,\ + lib2/libs/Fnd0SoaWProxyStrong_14000.2.0.jar,\ + lib2/libs/fscclient.jar,\ + lib2/libs/httpclient-4.5.13.jar,\ + lib2/libs/httpcore-4.4.13.jar,\ + lib2/libs/httpmime-4.5.13.jar,\ + lib2/libs/IAV0SoaStrongModelVerificationManagement_14000.2.0.jar,\ + lib2/libs/Icp0SoaStrongModelCampaignMgmt_14000.2.0.jar,\ + lib2/libs/Iim0SoaStrongModelIdeaMgmt_14000.2.0.jar,\ + lib2/libs/Im0SoaStrongModelIndustryMachinery_14000.2.0.jar,\ + lib2/libs/Imd0SoaMedicalDeviceLoose_14000.2.0.jar,\ + lib2/libs/Imd0SoaMedicalDeviceStrong_14000.2.0.jar,\ + lib2/libs/Imd0SoaStrongModelMedicalDevice_14000.2.0.jar,\ + lib2/libs/Imp0SoaLabelManagementLoose_14000.2.0.jar,\ + lib2/libs/Imp0SoaLabelManagementRac_14000.2.0.jar,\ + lib2/libs/Imp0SoaLabelManagementStrong_14000.2.0.jar,\ + lib2/libs/Imp0SoaStrongModelLabelManagement_14000.2.0.jar,\ + lib2/libs/Ipm0SoaStrongModelIntegProgMgmt_14000.2.0.jar,\ + lib2/libs/Ipt0SoaStrongModelTC4IPMgmt_14000.2.0.jar,\ + lib2/libs/Isi0SoaStrongModelIPManagement_14000.2.0.jar,\ + lib2/libs/jackson-annotations-2.13.4.jar,\ + lib2/libs/jackson-core-2.13.4.jar,\ + lib2/libs/jackson-databind-2.13.4.2.jar,\ + lib2/libs/jakarta.activation.jar,\ + lib2/libs/jakarta.xml.bind-api.jar,\ + lib2/libs/jaxb-impl.jar,\ + lib2/libs/Lbr0SoaLibraryManagementLoose_14000.2.0.jar,\ + lib2/libs/Lbr0SoaLibraryManagementRac_14000.2.0.jar,\ + lib2/libs/Lbr0SoaLibraryManagementStrong_14000.2.0.jar,\ + lib2/libs/Les0SoaStrongModelLisesm_14000.2.0.jar,\ + lib2/libs/Lgt0SoaLogisticsLoose_14000.2.0.jar,\ + lib2/libs/Lgt0SoaLogisticsRac_14000.2.0.jar,\ + lib2/libs/Lgt0SoaLogisticsStrong_14000.2.0.jar,\ + lib2/libs/Lgt0SoaStrongModelLogistics_14000.2.0.jar,\ + lib2/libs/Lis0SoaLdfLoose_14000.2.0.jar,\ + lib2/libs/Lis0SoaLdfRac_14000.2.0.jar,\ + lib2/libs/Lis0SoaLdfStrong_14000.2.0.jar,\ + lib2/libs/Lis0SoaStrongModelLdf_14000.2.0.jar,\ + lib2/libs/log4j-1.2-api-2.17.1.jar,\ + lib2/libs/log4j-api-2.17.1.jar,\ + lib2/libs/log4j-core-2.17.1.jar,\ + lib2/libs/Lrm0SoaStrongModelLisrm_14000.2.0.jar,\ + lib2/libs/Mat1SoaMaterialMgmtLoose_14000.2.0.jar,\ + lib2/libs/Mat1SoaMaterialMgmtRac_14000.2.0.jar,\ + lib2/libs/Mat1SoaMaterialMgmtStrong_14000.2.0.jar,\ + lib2/libs/Mci0SoaPMIManagementLoose_14000.2.0.jar,\ + lib2/libs/Mci0SoaPMIManagementRac_14000.2.0.jar,\ + lib2/libs/Mci0SoaPMIManagementStrong_14000.2.0.jar,\ + lib2/libs/Mci0SoaStrongModelPMIManagement_14000.2.0.jar,\ + lib2/libs/Mdc0SoaMDConnectivityLoose_14000.2.0.jar,\ + lib2/libs/Mdc0SoaMDConnectivityStrong_14000.2.0.jar,\ + lib2/libs/Mdl0SoaModelCoreLoose_14000.2.0.jar,\ + lib2/libs/Mdl0SoaModelCoreRac_14000.2.0.jar,\ + lib2/libs/Mdl0SoaModelCoreStrong_14000.2.0.jar,\ + lib2/libs/Mdo0SoaMDOManagementLoose_14000.2.0.jar,\ + lib2/libs/Mdo0SoaMDOManagementRac_14000.2.0.jar,\ + lib2/libs/Mdo0SoaMDOManagementStrong_14000.2.0.jar,\ + lib2/libs/Mdo0SoaStrongModelMdo_14000.2.0.jar,\ + lib2/libs/Mds0SoaStrongModelMedDevFoundation_14000.2.0.jar,\ + lib2/libs/Mea0SoaStrongModelMea0Fpam_14000.2.0.jar,\ + lib2/libs/Mei0SoaMESIntegLoose_14000.2.0.jar,\ + lib2/libs/Mei0SoaMESIntegRac_14000.2.0.jar,\ + lib2/libs/Mei0SoaMESIntegStrong_14000.2.0.jar,\ + lib2/libs/Mei0SoaStrongModelMESInteg_14000.2.0.jar,\ + lib2/libs/Mq0SoaStrongModelHara_14000.2.0.jar,\ + lib2/libs/Nxc0SoaTcinCpdLoose_14000.2.0.jar,\ + lib2/libs/Nxc0SoaTcinCpdRac_14000.2.0.jar,\ + lib2/libs/Nxc0SoaTcinCpdStrong_14000.2.0.jar,\ + lib2/libs/Nxl0SoaStrongModelLogical_14000.2.0.jar,\ + lib2/libs/Ods0SoaObjectDataServicesLoose_14000.2.0.jar,\ + lib2/libs/Ods0SoaObjectDataServicesRac_14000.2.0.jar,\ + lib2/libs/Ods0SoaObjectDataServicesStrong_14000.2.0.jar,\ + lib2/libs/Ods0SoaStrongModelObjectDataServices_14000.2.0.jar,\ + lib2/libs/Ods9SoaStrongModelObjectDataServicesTest_14000.2.0.jar,\ + lib2/libs/Oo1SoaOfficeOnlineLoose_14000.2.0.jar,\ + lib2/libs/Oo1SoaOfficeOnlineRac_14000.2.0.jar,\ + lib2/libs/Oo1SoaOfficeOnlineStrong_14000.2.0.jar,\ + lib2/libs/Ord0SoaStrongModelOrderManagement_14000.2.0.jar,\ + lib2/libs/Osl0SoaStrongModelLISOSLC_14000.2.0.jar,\ + lib2/libs/Pdg0SoaStrongModelPtnDesignGdlines_14000.2.0.jar,\ + lib2/libs/Pdm0SoaPlantDataMgmtLoose_14000.2.0.jar,\ + lib2/libs/Pdm0SoaPlantDataMgmtStrong_14000.2.0.jar,\ + lib2/libs/Pdm0SoaStrongModelPlantDataMgmt_14000.2.0.jar,\ + lib2/libs/Pfp0SoaFeaturePlanningLoose_14000.2.0.jar,\ + lib2/libs/Pfp0SoaFeaturePlanningStrong_14000.2.0.jar,\ + lib2/libs/Pma0SoaStrongModelAutomation_14000.2.0.jar,\ + lib2/libs/Pmg0SoaStrongModelCpMgmt_14000.2.0.jar,\ + lib2/libs/Prg0SoaProgramInfraLoose_14000.2.0.jar,\ + lib2/libs/Prg0SoaProgramInfraStrong_14000.2.0.jar,\ + lib2/libs/Prg0SoaStrongModelProgramInfra_14000.2.0.jar,\ + lib2/libs/Prg1SoaProgramPlanningAppLoose_14000.2.0.jar,\ + lib2/libs/Prg1SoaProgramPlanningAppStrong_14000.2.0.jar,\ + lib2/libs/Prg1SoaStrongModelProgramPlanningApp_14000.2.0.jar,\ + lib2/libs/Ptn0SoaPartitionLoose_14000.2.0.jar,\ + lib2/libs/Ptn0SoaPartitionRac_14000.2.0.jar,\ + lib2/libs/Ptn0SoaPartitionStrong_14000.2.0.jar,\ + lib2/libs/Qc0SoaStrongModelQualityCenterBase_14000.2.0.jar,\ + lib2/libs/Rlz0SoaRealizationLoose_14000.2.0.jar,\ + lib2/libs/Rlz0SoaRealizationRac_14000.2.0.jar,\ + lib2/libs/Rlz0SoaRealizationStrong_14000.2.0.jar,\ + lib2/libs/Rse0SoaStrongModelTcRsEnablement_14000.2.0.jar,\ + lib2/libs/SAS0SoaSvcAutoSchedulingLoose_14000.2.0.jar,\ + lib2/libs/SAS0SoaSvcAutoSchedulingRac_14000.2.0.jar,\ + lib2/libs/SAS0SoaSvcAutoSchedulingStrong_14000.2.0.jar,\ + lib2/libs/Sdm0SoaStrongModelSampleDocMgt_14000.2.0.jar,\ + lib2/libs/serializer.jar,\ + lib2/libs/Sfd0SoaSemiconductorFoundationLoose_14000.2.0.jar,\ + lib2/libs/Sfd0SoaSemiconductorFoundationStrong_14000.2.0.jar,\ + lib2/libs/Sfd0SoaStrongModelSemiconductorFoundation_14000.2.0.jar,\ + lib2/libs/Sis0SoaSocialIntLoose_14000.2.0.jar,\ + lib2/libs/Sis0SoaSocialIntRac_14000.2.0.jar,\ + lib2/libs/Sis0SoaSocialIntStrong_14000.2.0.jar,\ + lib2/libs/Smc0SoaStrongModelPsMcfgSupport_14000.2.0.jar,\ + lib2/libs/Smc0SoaStructureManagementLoose_14000.2.0.jar,\ + lib2/libs/Smc0SoaStructureManagementRac_14000.2.0.jar,\ + lib2/libs/Smc0SoaStructureManagementStrong_14000.2.0.jar,\ + lib2/libs/Srh0SoaStrongModelApsConfiguredSearch_14000.2.0.jar,\ + lib2/libs/SSF0SoaServiceForecastingLoose_14000.2.0.jar,\ + lib2/libs/SSF0SoaServiceForecastingRac_14000.2.0.jar,\ + lib2/libs/SSF0SoaServiceForecastingStrong_14000.2.0.jar,\ + lib2/libs/SSF0SoaStrongModelServiceForecasting_14000.2.0.jar,\ + lib2/libs/Ssm0SoaStrongModelSystemSynthesisModeling_14000.2.0.jar,\ + lib2/libs/SSP0SoaStrongModelServicePlanning_14000.2.0.jar,\ + lib2/libs/SSS0SoaStrongModelServiceScheduling_14000.2.0.jar,\ + lib2/libs/SSS0SoaSvcSchedulingLoose_14000.2.0.jar,\ + lib2/libs/SSS0SoaSvcSchedulingRac_14000.2.0.jar,\ + lib2/libs/SSS0SoaSvcSchedulingStrong_14000.2.0.jar,\ + lib2/libs/tcmemjavabinding.jar,\ + lib2/libs/tcserverjavabinding.jar,\ + lib2/libs/TcSoaAdministrationLoose_14000.2.0.jar,\ + lib2/libs/TcSoaAdministrationRac_14000.2.0.jar,\ + lib2/libs/TcSoaAdministrationStrong_14000.2.0.jar,\ + lib2/libs/TcSoaAiLoose_14000.2.0.jar,\ + lib2/libs/TcSoaAiRac_14000.2.0.jar,\ + lib2/libs/TcSoaAiStrong_14000.2.0.jar,\ + lib2/libs/TcSoaAllocationsLoose_14000.2.0.jar,\ + lib2/libs/TcSoaAllocationsRac_14000.2.0.jar,\ + lib2/libs/TcSoaAllocationsStrong_14000.2.0.jar,\ + lib2/libs/TcSoaAsbAsmAlignmentLoose_14000.2.0.jar,\ + lib2/libs/TcSoaAsbAsmAlignmentRac_14000.2.0.jar,\ + lib2/libs/TcSoaAsbAsmAlignmentStrong_14000.2.0.jar,\ + lib2/libs/TcSoaAsBuiltLoose_14000.2.0.jar,\ + lib2/libs/TcSoaAsBuiltRac_14000.2.0.jar,\ + lib2/libs/TcSoaAsBuiltStrong_14000.2.0.jar,\ + lib2/libs/TcSoaAsMaintainedLoose_14000.2.0.jar,\ + lib2/libs/TcSoaAsMaintainedRac_14000.2.0.jar,\ + lib2/libs/TcSoaAsMaintainedStrong_14000.2.0.jar,\ + lib2/libs/TcSoaAuthorizedDataAccessLoose_14000.2.0.jar,\ + lib2/libs/TcSoaAuthorizedDataAccessRac_14000.2.0.jar,\ + lib2/libs/TcSoaAuthorizedDataAccessStrong_14000.2.0.jar,\ + lib2/libs/TcSoaBomLoose_14000.2.0.jar,\ + lib2/libs/TcSoaBomRac_14000.2.0.jar,\ + lib2/libs/TcSoaBomStrong_14000.2.0.jar,\ + lib2/libs/TcSoaBusinessModelerLoose_14000.2.0.jar,\ + lib2/libs/TcSoaBusinessModelerRac_14000.2.0.jar,\ + lib2/libs/TcSoaBusinessModelerStrong_14000.2.0.jar,\ + lib2/libs/TcSoaCadBomAlignmentLoose_14000.2.0.jar,\ + lib2/libs/TcSoaCadBomAlignmentRac_14000.2.0.jar,\ + lib2/libs/TcSoaCadBomAlignmentStrong_14000.2.0.jar,\ + lib2/libs/TcSoaCadLoose_14000.2.0.jar,\ + lib2/libs/TcSoaCadRac_14000.2.0.jar,\ + lib2/libs/TcSoaCadStrong_14000.2.0.jar,\ + lib2/libs/TcSoaCaeLoose_14000.2.0.jar,\ + lib2/libs/TcSoaCaeRac_14000.2.0.jar,\ + lib2/libs/TcSoaCaeStrong_14000.2.0.jar,\ + lib2/libs/TcSoaCalendarManagementLoose_14000.2.0.jar,\ + lib2/libs/TcSoaCalendarManagementRac_14000.2.0.jar,\ + lib2/libs/TcSoaCalendarManagementStrong_14000.2.0.jar,\ + lib2/libs/TcSoaChangeManagementLoose_14000.2.0.jar,\ + lib2/libs/TcSoaChangeManagementRac_14000.2.0.jar,\ + lib2/libs/TcSoaChangeManagementStrong_14000.2.0.jar,\ + lib2/libs/TcSoaClassificationLoose_14000.2.0.jar,\ + lib2/libs/TcSoaClassificationRac_14000.2.0.jar,\ + lib2/libs/TcSoaClassificationStrong_14000.2.0.jar,\ + lib2/libs/TcSoaClient_14000.2.0.jar,\ + lib2/libs/TcSoaCommon_14000.2.0.jar,\ + lib2/libs/TcSoaContMgmtBaseLoose_14000.2.0.jar,\ + lib2/libs/TcSoaContMgmtBaseRac_14000.2.0.jar,\ + lib2/libs/TcSoaContMgmtBaseStrong_14000.2.0.jar,\ + lib2/libs/TcSoaCoreLoose_14000.2.0.jar,\ + lib2/libs/TcSoaCoreRac_14000.2.0.jar,\ + lib2/libs/TcSoaCoreStrong_14000.2.0.jar,\ + lib2/libs/TcSoaDocumentManagementLoose_14000.2.0.jar,\ + lib2/libs/TcSoaDocumentManagementRac_14000.2.0.jar,\ + lib2/libs/TcSoaDocumentManagementStrong_14000.2.0.jar,\ + lib2/libs/TcSoaGlobalMultiSiteLoose_14000.2.0.jar,\ + lib2/libs/TcSoaGlobalMultiSiteRac_14000.2.0.jar,\ + lib2/libs/TcSoaGlobalMultiSiteStrong_14000.2.0.jar,\ + lib2/libs/TcSoaImportExportLoose_14000.2.0.jar,\ + lib2/libs/TcSoaImportExportRac_14000.2.0.jar,\ + lib2/libs/TcSoaImportExportStrong_14000.2.0.jar,\ + lib2/libs/TcSoaIssueManagementLoose_14000.2.0.jar,\ + lib2/libs/TcSoaIssueManagementRac_14000.2.0.jar,\ + lib2/libs/TcSoaIssueManagementStrong_14000.2.0.jar,\ + lib2/libs/TcSoaManufacturingLoose_14000.2.0.jar,\ + lib2/libs/TcSoaManufacturingRac_14000.2.0.jar,\ + lib2/libs/TcSoaManufacturingStrong_14000.2.0.jar,\ + lib2/libs/TcSoaMESLoose_14000.2.0.jar,\ + lib2/libs/TcSoaMESRac_14000.2.0.jar,\ + lib2/libs/TcSoaMESStrong_14000.2.0.jar,\ + lib2/libs/TcSoaMROCoreLoose_14000.2.0.jar,\ + lib2/libs/TcSoaMROCoreRac_14000.2.0.jar,\ + lib2/libs/TcSoaMROCoreStrong_14000.2.0.jar,\ + lib2/libs/TcSoaMultisiteLoose_14000.2.0.jar,\ + lib2/libs/TcSoaMultisiteRac_14000.2.0.jar,\ + lib2/libs/TcSoaMultisiteStrong_14000.2.0.jar,\ + lib2/libs/TcSoaParameterManagementLoose_14000.2.0.jar,\ + lib2/libs/TcSoaParameterManagementRac_14000.2.0.jar,\ + lib2/libs/TcSoaParameterManagementStrong_14000.2.0.jar,\ + lib2/libs/TcSoaProductionManagementLoose_14000.2.0.jar,\ + lib2/libs/TcSoaProductionManagementRac_14000.2.0.jar,\ + lib2/libs/TcSoaProductionManagementStrong_14000.2.0.jar,\ + lib2/libs/TcSoaProjectManagementLoose_14000.2.0.jar,\ + lib2/libs/TcSoaProjectManagementRac_14000.2.0.jar,\ + lib2/libs/TcSoaProjectManagementStrong_14000.2.0.jar,\ + lib2/libs/TcSoaQueryLoose_14000.2.0.jar,\ + lib2/libs/TcSoaQueryRac_14000.2.0.jar,\ + lib2/libs/TcSoaQueryStrong_14000.2.0.jar,\ + lib2/libs/TcSoaRdvLoose_14000.2.0.jar,\ + lib2/libs/TcSoaRdvRac_14000.2.0.jar,\ + lib2/libs/TcSoaRdvStrong_14000.2.0.jar,\ + lib2/libs/TcSoaReportsLoose_14000.2.0.jar,\ + lib2/libs/TcSoaReportsRac_14000.2.0.jar,\ + lib2/libs/TcSoaReportsStrong_14000.2.0.jar,\ + lib2/libs/TcSoaRequirementsManagementLoose_14000.2.0.jar,\ + lib2/libs/TcSoaRequirementsManagementRac_14000.2.0.jar,\ + lib2/libs/TcSoaRequirementsManagementStrong_14000.2.0.jar,\ + lib2/libs/TcSoaSrmIntegrationLoose_14000.2.0.jar,\ + lib2/libs/TcSoaSrmIntegrationRac_14000.2.0.jar,\ + lib2/libs/TcSoaSrmIntegrationStrong_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModel_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelAdsChangeManagement_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelAdsFoundation_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelAsBuilt_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelAsMaintained_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelBrndMgmt_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelCba_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelCcdm_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelCdm0ContractManagement_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelClassificationCore_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelCm_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelCmtEbop_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelCmtEmserver_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelCmtPadTwp_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelContmgmtBase_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelContmgmtDita_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelContmgmtS1000d_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelContmgmtS1000d40_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelCpdCore_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelCpgMaterials_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelDiagramming_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelDpv_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelEdaLibrary_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelEdaServer_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelEmps_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelEsddm_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelEsmBase_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelEsmProcessor_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelEsmSoftware_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelFnshmgmt_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelFpMgmt_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelGmo_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelHrn_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelIssuemgmt_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelLibraryManagement_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelMaterialMgmt_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelMDConnectivity_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelMES_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelMesIssueMgmt_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelModelCore_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelMROCore_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelNX0tcin_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelNXB0stage_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelNXP0pid_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelPartition_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelPenetrationmgmt_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelPkgArt_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelPlp0ProdLinePlan_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelPMI_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelProductVariant_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelRealization_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelScdt_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelScmCc_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelServiceEventManagement_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelServiceProcessing_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelServiceRequest_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelSmdsysmodeling_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelSpecMgr_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelSSPSPRAlignment_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelStockMaterial_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelSystemsEngineering_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelTcae_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelTransactionProcessing_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelVendorManagement_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelWeldManagement_14000.2.0.jar,\ + lib2/libs/TcSoaStrongModelWorkPackageManagement_14000.2.0.jar,\ + lib2/libs/TcSoaStructureManagementLoose_14000.2.0.jar,\ + lib2/libs/TcSoaStructureManagementRac_14000.2.0.jar,\ + lib2/libs/TcSoaStructureManagementStrong_14000.2.0.jar,\ + lib2/libs/TcSoaSvcProcessingLoose_14000.2.0.jar,\ + lib2/libs/TcSoaSvcProcessingRac_14000.2.0.jar,\ + lib2/libs/TcSoaSvcProcessingStrong_14000.2.0.jar,\ + lib2/libs/TcSoaSvcRequestLoose_14000.2.0.jar,\ + lib2/libs/TcSoaSvcRequestRac_14000.2.0.jar,\ + lib2/libs/TcSoaSvcRequestStrong_14000.2.0.jar,\ + lib2/libs/TcSoaSystemsEngineeringLoose_14000.2.0.jar,\ + lib2/libs/TcSoaSystemsEngineeringRac_14000.2.0.jar,\ + lib2/libs/TcSoaSystemsEngineeringStrong_14000.2.0.jar,\ + lib2/libs/TcSoaTranslationLoose_14000.2.0.jar,\ + lib2/libs/TcSoaTranslationRac_14000.2.0.jar,\ + lib2/libs/TcSoaTranslationStrong_14000.2.0.jar,\ + lib2/libs/TcSoaVendorManagementLoose_14000.2.0.jar,\ + lib2/libs/TcSoaVendorManagementRac_14000.2.0.jar,\ + lib2/libs/TcSoaVendorManagementStrong_14000.2.0.jar,\ + lib2/libs/TcSoaVisualizationLoose_14000.2.0.jar,\ + lib2/libs/TcSoaVisualizationRac_14000.2.0.jar,\ + lib2/libs/TcSoaVisualizationStrong_14000.2.0.jar,\ + lib2/libs/TcSoaWireHarnessLoose_14000.2.0.jar,\ + lib2/libs/TcSoaWireHarnessRac_14000.2.0.jar,\ + lib2/libs/TcSoaWireHarnessStrong_14000.2.0.jar,\ + lib2/libs/TcSoaWorkflowLoose_14000.2.0.jar,\ + lib2/libs/TcSoaWorkflowRac_14000.2.0.jar,\ + lib2/libs/TcSoaWorkflowStrong_14000.2.0.jar,\ + lib2/libs/tctp_14000.2.0.jar,\ + lib2/libs/teamcenter_sso_applib.jar,\ + lib2/libs/teamcenter_sso_common.jar,\ + lib2/libs/teamcenter_sso_ldapcustom.jar,\ + lib2/libs/teamcenter_sso_webtoolkit.jar,\ + lib2/libs/Tgm0SoaStrongModelTargetManagement_14000.2.0.jar,\ + lib2/libs/Tgm0SoaTargetManagementLoose_14000.2.0.jar,\ + lib2/libs/Tgm0SoaTargetManagementStrong_14000.2.0.jar,\ + lib2/libs/Tm0SoaStrongModelTestManagement_14000.2.0.jar,\ + lib2/libs/Tm0SoaTestManagementLoose_14000.2.0.jar,\ + lib2/libs/Tm0SoaTestManagementRac_14000.2.0.jar,\ + lib2/libs/Tm0SoaTestManagementStrong_14000.2.0.jar,\ + lib2/libs/Val0SoaNXValidationLoose_14000.2.0.jar,\ + lib2/libs/Val0SoaNXValidationRac_14000.2.0.jar,\ + lib2/libs/Val0SoaNXValidationStrong_14000.2.0.jar,\ + lib2/libs/Val0SoaStrongModelNXValidation_14000.2.0.jar,\ + lib2/libs/Val1SoaCfgValidationLoose_14000.2.0.jar,\ + lib2/libs/Val1SoaCfgValidationRac_14000.2.0.jar,\ + lib2/libs/Val1SoaCfgValidationStrong_14000.2.0.jar,\ + lib2/libs/Val1SoaStrongModelCfgValidation_14000.2.0.jar,\ + lib2/libs/WdM0SoaWeldManagementLoose_14000.2.0.jar,\ + lib2/libs/WdM0SoaWeldManagementRac_14000.2.0.jar,\ + lib2/libs/WdM0SoaWeldManagementStrong_14000.2.0.jar,\ + lib2/libs/Wnb0SoaStrongModelWeightandBalance_14000.2.0.jar,\ + lib2/libs/Wnb0SoaWeightAndBalanceLoose_14000.2.0.jar,\ + lib2/libs/Wnb0SoaWeightAndBalanceRac_14000.2.0.jar,\ + lib2/libs/Wnb0SoaWeightAndBalanceStrong_14000.2.0.jar,\ + lib2/libs/Xc0SoaStrongModelShareCollaboration_14000.2.0.jar,\ + lib2/libs/xercesImpl.jar diff --git a/icons/sample.png b/icons/sample.png new file mode 100644 index 0000000..02c4b79 Binary files /dev/null and b/icons/sample.png differ diff --git a/icons/sample@2x.png b/icons/sample@2x.png new file mode 100644 index 0000000..c1224d1 Binary files /dev/null and b/icons/sample@2x.png differ diff --git a/lib/aspose-words-17.4.0-jdk16.jar b/lib/aspose-words-17.4.0-jdk16.jar new file mode 100644 index 0000000..e8bd66c Binary files /dev/null and b/lib/aspose-words-17.4.0-jdk16.jar differ diff --git a/lib/commons-collections4-4.1.jar b/lib/commons-collections4-4.1.jar new file mode 100644 index 0000000..43a9413 Binary files /dev/null and b/lib/commons-collections4-4.1.jar differ diff --git a/lib/jdom2-2.0.6.jar b/lib/jdom2-2.0.6.jar new file mode 100644 index 0000000..2850ca1 Binary files /dev/null and b/lib/jdom2-2.0.6.jar differ diff --git a/lib/mssql-jdbc-8.2.2.jre8.jar b/lib/mssql-jdbc-8.2.2.jre8.jar new file mode 100644 index 0000000..8fc6c0b Binary files /dev/null and b/lib/mssql-jdbc-8.2.2.jre8.jar differ diff --git a/lib/swingx-1.6.1.jar b/lib/swingx-1.6.1.jar new file mode 100644 index 0000000..b0bcc87 Binary files /dev/null and b/lib/swingx-1.6.1.jar differ diff --git a/lib/xmlbeans-2.6.0.jar b/lib/xmlbeans-2.6.0.jar new file mode 100644 index 0000000..d1b6627 Binary files /dev/null and b/lib/xmlbeans-2.6.0.jar differ diff --git a/lib2/libs/Ads0SoaAdsFoundationLoose_14000.2.0.jar b/lib2/libs/Ads0SoaAdsFoundationLoose_14000.2.0.jar new file mode 100644 index 0000000..5b3de87 Binary files /dev/null and b/lib2/libs/Ads0SoaAdsFoundationLoose_14000.2.0.jar differ diff --git a/lib2/libs/Ads0SoaAdsFoundationRac_14000.2.0.jar b/lib2/libs/Ads0SoaAdsFoundationRac_14000.2.0.jar new file mode 100644 index 0000000..de9665c Binary files /dev/null and b/lib2/libs/Ads0SoaAdsFoundationRac_14000.2.0.jar differ diff --git a/lib2/libs/Ads0SoaAdsFoundationStrong_14000.2.0.jar b/lib2/libs/Ads0SoaAdsFoundationStrong_14000.2.0.jar new file mode 100644 index 0000000..88ea428 Binary files /dev/null and b/lib2/libs/Ads0SoaAdsFoundationStrong_14000.2.0.jar differ diff --git a/lib2/libs/Aed0SoaStrongModelAutomationElectricDesign_14000.2.0.jar b/lib2/libs/Aed0SoaStrongModelAutomationElectricDesign_14000.2.0.jar new file mode 100644 index 0000000..5aa0029 Binary files /dev/null and b/lib2/libs/Aed0SoaStrongModelAutomationElectricDesign_14000.2.0.jar differ diff --git a/lib2/libs/Ap0SoaStrongModelAdvancePlanner_14000.2.0.jar b/lib2/libs/Ap0SoaStrongModelAdvancePlanner_14000.2.0.jar new file mode 100644 index 0000000..e9c0b8c Binary files /dev/null and b/lib2/libs/Ap0SoaStrongModelAdvancePlanner_14000.2.0.jar differ diff --git a/lib2/libs/Apb0SoaStrongModelAttrParmBase_14000.2.0.jar b/lib2/libs/Apb0SoaStrongModelAttrParmBase_14000.2.0.jar new file mode 100644 index 0000000..d31f915 Binary files /dev/null and b/lib2/libs/Apb0SoaStrongModelAttrParmBase_14000.2.0.jar differ diff --git a/lib2/libs/Aps0SoaStrongModelApsCore_14000.2.0.jar b/lib2/libs/Aps0SoaStrongModelApsCore_14000.2.0.jar new file mode 100644 index 0000000..57be759 Binary files /dev/null and b/lib2/libs/Aps0SoaStrongModelApsCore_14000.2.0.jar differ diff --git a/lib2/libs/As0SoaAspCoreLoose_14000.2.0.jar b/lib2/libs/As0SoaAspCoreLoose_14000.2.0.jar new file mode 100644 index 0000000..47871cb Binary files /dev/null and b/lib2/libs/As0SoaAspCoreLoose_14000.2.0.jar differ diff --git a/lib2/libs/As0SoaAspCoreRac_14000.2.0.jar b/lib2/libs/As0SoaAspCoreRac_14000.2.0.jar new file mode 100644 index 0000000..6c8da11 Binary files /dev/null and b/lib2/libs/As0SoaAspCoreRac_14000.2.0.jar differ diff --git a/lib2/libs/As0SoaAspCoreStrong_14000.2.0.jar b/lib2/libs/As0SoaAspCoreStrong_14000.2.0.jar new file mode 100644 index 0000000..eab7cda Binary files /dev/null and b/lib2/libs/As0SoaAspCoreStrong_14000.2.0.jar differ diff --git a/lib2/libs/As0SoaStrongModelAutoSupplier_14000.2.0.jar b/lib2/libs/As0SoaStrongModelAutoSupplier_14000.2.0.jar new file mode 100644 index 0000000..8badbf3 Binary files /dev/null and b/lib2/libs/As0SoaStrongModelAutoSupplier_14000.2.0.jar differ diff --git a/lib2/libs/Asp0SoaAspectLoose_14000.2.0.jar b/lib2/libs/Asp0SoaAspectLoose_14000.2.0.jar new file mode 100644 index 0000000..46db24f Binary files /dev/null and b/lib2/libs/Asp0SoaAspectLoose_14000.2.0.jar differ diff --git a/lib2/libs/Asp0SoaAspectRac_14000.2.0.jar b/lib2/libs/Asp0SoaAspectRac_14000.2.0.jar new file mode 100644 index 0000000..2001456 Binary files /dev/null and b/lib2/libs/Asp0SoaAspectRac_14000.2.0.jar differ diff --git a/lib2/libs/Asp0SoaAspectStrong_14000.2.0.jar b/lib2/libs/Asp0SoaAspectStrong_14000.2.0.jar new file mode 100644 index 0000000..e824db8 Binary files /dev/null and b/lib2/libs/Asp0SoaAspectStrong_14000.2.0.jar differ diff --git a/lib2/libs/Asp0SoaStrongModelAspect_14000.2.0.jar b/lib2/libs/Asp0SoaStrongModelAspect_14000.2.0.jar new file mode 100644 index 0000000..5d7b19f Binary files /dev/null and b/lib2/libs/Asp0SoaStrongModelAspect_14000.2.0.jar differ diff --git a/lib2/libs/Att0SoaAttrTargetMgmtLoose_14000.2.0.jar b/lib2/libs/Att0SoaAttrTargetMgmtLoose_14000.2.0.jar new file mode 100644 index 0000000..65eac45 Binary files /dev/null and b/lib2/libs/Att0SoaAttrTargetMgmtLoose_14000.2.0.jar differ diff --git a/lib2/libs/Att0SoaAttrTargetMgmtRac_14000.2.0.jar b/lib2/libs/Att0SoaAttrTargetMgmtRac_14000.2.0.jar new file mode 100644 index 0000000..0b75b45 Binary files /dev/null and b/lib2/libs/Att0SoaAttrTargetMgmtRac_14000.2.0.jar differ diff --git a/lib2/libs/Att0SoaAttrTargetMgmtStrong_14000.2.0.jar b/lib2/libs/Att0SoaAttrTargetMgmtStrong_14000.2.0.jar new file mode 100644 index 0000000..f3d9880 Binary files /dev/null and b/lib2/libs/Att0SoaAttrTargetMgmtStrong_14000.2.0.jar differ diff --git a/lib2/libs/Att0SoaStrongModelAttrTargetMgmt_14000.2.0.jar b/lib2/libs/Att0SoaStrongModelAttrTargetMgmt_14000.2.0.jar new file mode 100644 index 0000000..b17cd19 Binary files /dev/null and b/lib2/libs/Att0SoaStrongModelAttrTargetMgmt_14000.2.0.jar differ diff --git a/lib2/libs/Bdo0SoaStrongModelBranchDataOrganization_14000.2.0.jar b/lib2/libs/Bdo0SoaStrongModelBranchDataOrganization_14000.2.0.jar new file mode 100644 index 0000000..cca652b Binary files /dev/null and b/lib2/libs/Bdo0SoaStrongModelBranchDataOrganization_14000.2.0.jar differ diff --git a/lib2/libs/Bhv0SoaBranchFoundationLoose_14000.2.0.jar b/lib2/libs/Bhv0SoaBranchFoundationLoose_14000.2.0.jar new file mode 100644 index 0000000..e9c4e51 Binary files /dev/null and b/lib2/libs/Bhv0SoaBranchFoundationLoose_14000.2.0.jar differ diff --git a/lib2/libs/Bhv0SoaBranchFoundationRac_14000.2.0.jar b/lib2/libs/Bhv0SoaBranchFoundationRac_14000.2.0.jar new file mode 100644 index 0000000..fa8bf6a Binary files /dev/null and b/lib2/libs/Bhv0SoaBranchFoundationRac_14000.2.0.jar differ diff --git a/lib2/libs/Bhv0SoaBranchFoundationStrong_14000.2.0.jar b/lib2/libs/Bhv0SoaBranchFoundationStrong_14000.2.0.jar new file mode 100644 index 0000000..e2edcfd Binary files /dev/null and b/lib2/libs/Bhv0SoaBranchFoundationStrong_14000.2.0.jar differ diff --git a/lib2/libs/Bhv0SoaStrongModelBranchfoundation_14000.2.0.jar b/lib2/libs/Bhv0SoaStrongModelBranchfoundation_14000.2.0.jar new file mode 100644 index 0000000..45eee96 Binary files /dev/null and b/lib2/libs/Bhv0SoaStrongModelBranchfoundation_14000.2.0.jar differ diff --git a/lib2/libs/Bom0SoaBomCoreLoose_14000.2.0.jar b/lib2/libs/Bom0SoaBomCoreLoose_14000.2.0.jar new file mode 100644 index 0000000..d6d58cf Binary files /dev/null and b/lib2/libs/Bom0SoaBomCoreLoose_14000.2.0.jar differ diff --git a/lib2/libs/Bom0SoaBomCoreRac_14000.2.0.jar b/lib2/libs/Bom0SoaBomCoreRac_14000.2.0.jar new file mode 100644 index 0000000..6cb6516 Binary files /dev/null and b/lib2/libs/Bom0SoaBomCoreRac_14000.2.0.jar differ diff --git a/lib2/libs/Bom0SoaBomCoreStrong_14000.2.0.jar b/lib2/libs/Bom0SoaBomCoreStrong_14000.2.0.jar new file mode 100644 index 0000000..ec6575c Binary files /dev/null and b/lib2/libs/Bom0SoaBomCoreStrong_14000.2.0.jar differ diff --git a/lib2/libs/Bom0SoaStrongModelBomManagement_14000.2.0.jar b/lib2/libs/Bom0SoaStrongModelBomManagement_14000.2.0.jar new file mode 100644 index 0000000..6dc42e2 Binary files /dev/null and b/lib2/libs/Bom0SoaStrongModelBomManagement_14000.2.0.jar differ diff --git a/lib2/libs/CAE0SoaSimProcLoose_14000.2.0.jar b/lib2/libs/CAE0SoaSimProcLoose_14000.2.0.jar new file mode 100644 index 0000000..cdfd3a0 Binary files /dev/null and b/lib2/libs/CAE0SoaSimProcLoose_14000.2.0.jar differ diff --git a/lib2/libs/CAE0SoaSimProcRac_14000.2.0.jar b/lib2/libs/CAE0SoaSimProcRac_14000.2.0.jar new file mode 100644 index 0000000..16b5be0 Binary files /dev/null and b/lib2/libs/CAE0SoaSimProcRac_14000.2.0.jar differ diff --git a/lib2/libs/CAE0SoaSimProcStrong_14000.2.0.jar b/lib2/libs/CAE0SoaSimProcStrong_14000.2.0.jar new file mode 100644 index 0000000..f7094ba Binary files /dev/null and b/lib2/libs/CAE0SoaSimProcStrong_14000.2.0.jar differ diff --git a/lib2/libs/CAE0SoaStrongModelSimProc_14000.2.0.jar b/lib2/libs/CAE0SoaStrongModelSimProc_14000.2.0.jar new file mode 100644 index 0000000..20041c2 Binary files /dev/null and b/lib2/libs/CAE0SoaStrongModelSimProc_14000.2.0.jar differ diff --git a/lib2/libs/CPA0SoaStrongModelCapaDataModel_14000.2.0.jar b/lib2/libs/CPA0SoaStrongModelCapaDataModel_14000.2.0.jar new file mode 100644 index 0000000..d9f8cba Binary files /dev/null and b/lib2/libs/CPA0SoaStrongModelCapaDataModel_14000.2.0.jar differ diff --git a/lib2/libs/Cba1SoaCbaExtLoose_14000.2.0.jar b/lib2/libs/Cba1SoaCbaExtLoose_14000.2.0.jar new file mode 100644 index 0000000..bfcd3bb Binary files /dev/null and b/lib2/libs/Cba1SoaCbaExtLoose_14000.2.0.jar differ diff --git a/lib2/libs/Cba1SoaCbaExtRac_14000.2.0.jar b/lib2/libs/Cba1SoaCbaExtRac_14000.2.0.jar new file mode 100644 index 0000000..c42bca4 Binary files /dev/null and b/lib2/libs/Cba1SoaCbaExtRac_14000.2.0.jar differ diff --git a/lib2/libs/Cba1SoaCbaExtStrong_14000.2.0.jar b/lib2/libs/Cba1SoaCbaExtStrong_14000.2.0.jar new file mode 100644 index 0000000..24ded62 Binary files /dev/null and b/lib2/libs/Cba1SoaCbaExtStrong_14000.2.0.jar differ diff --git a/lib2/libs/Cbm0SoaColorBomPmmLoose_14000.2.0.jar b/lib2/libs/Cbm0SoaColorBomPmmLoose_14000.2.0.jar new file mode 100644 index 0000000..6d7452e Binary files /dev/null and b/lib2/libs/Cbm0SoaColorBomPmmLoose_14000.2.0.jar differ diff --git a/lib2/libs/Cbm0SoaColorBomPmmRac_14000.2.0.jar b/lib2/libs/Cbm0SoaColorBomPmmRac_14000.2.0.jar new file mode 100644 index 0000000..8943283 Binary files /dev/null and b/lib2/libs/Cbm0SoaColorBomPmmRac_14000.2.0.jar differ diff --git a/lib2/libs/Cbm0SoaColorBomPmmStrong_14000.2.0.jar b/lib2/libs/Cbm0SoaColorBomPmmStrong_14000.2.0.jar new file mode 100644 index 0000000..a37346a Binary files /dev/null and b/lib2/libs/Cbm0SoaColorBomPmmStrong_14000.2.0.jar differ diff --git a/lib2/libs/Cbm0SoaStrongModelColorBomPmm_14000.2.0.jar b/lib2/libs/Cbm0SoaStrongModelColorBomPmm_14000.2.0.jar new file mode 100644 index 0000000..741b6dc Binary files /dev/null and b/lib2/libs/Cbm0SoaStrongModelColorBomPmm_14000.2.0.jar differ diff --git a/lib2/libs/Cdm0SoaContractManagementLoose_14000.2.0.jar b/lib2/libs/Cdm0SoaContractManagementLoose_14000.2.0.jar new file mode 100644 index 0000000..5658c41 Binary files /dev/null and b/lib2/libs/Cdm0SoaContractManagementLoose_14000.2.0.jar differ diff --git a/lib2/libs/Cdm0SoaContractManagementRac_14000.2.0.jar b/lib2/libs/Cdm0SoaContractManagementRac_14000.2.0.jar new file mode 100644 index 0000000..16dde29 Binary files /dev/null and b/lib2/libs/Cdm0SoaContractManagementRac_14000.2.0.jar differ diff --git a/lib2/libs/Cdm0SoaContractManagementStrong_14000.2.0.jar b/lib2/libs/Cdm0SoaContractManagementStrong_14000.2.0.jar new file mode 100644 index 0000000..70f4f20 Binary files /dev/null and b/lib2/libs/Cdm0SoaContractManagementStrong_14000.2.0.jar differ diff --git a/lib2/libs/Cfg0SoaConfiguratorLoose_14000.2.0.jar b/lib2/libs/Cfg0SoaConfiguratorLoose_14000.2.0.jar new file mode 100644 index 0000000..4eb4e4c Binary files /dev/null and b/lib2/libs/Cfg0SoaConfiguratorLoose_14000.2.0.jar differ diff --git a/lib2/libs/Cfg0SoaConfiguratorRac_14000.2.0.jar b/lib2/libs/Cfg0SoaConfiguratorRac_14000.2.0.jar new file mode 100644 index 0000000..48e7ded Binary files /dev/null and b/lib2/libs/Cfg0SoaConfiguratorRac_14000.2.0.jar differ diff --git a/lib2/libs/Cfg0SoaConfiguratorStrong_14000.2.0.jar b/lib2/libs/Cfg0SoaConfiguratorStrong_14000.2.0.jar new file mode 100644 index 0000000..39d4ce8 Binary files /dev/null and b/lib2/libs/Cfg0SoaConfiguratorStrong_14000.2.0.jar differ diff --git a/lib2/libs/Cfg0SoaStrongModelConfigurator_14000.2.0.jar b/lib2/libs/Cfg0SoaStrongModelConfigurator_14000.2.0.jar new file mode 100644 index 0000000..fc4ff9c Binary files /dev/null and b/lib2/libs/Cfg0SoaStrongModelConfigurator_14000.2.0.jar differ diff --git a/lib2/libs/Cfg1SoaStrongModelConfigurator_14000.2.0.jar b/lib2/libs/Cfg1SoaStrongModelConfigurator_14000.2.0.jar new file mode 100644 index 0000000..f469cf7 Binary files /dev/null and b/lib2/libs/Cfg1SoaStrongModelConfigurator_14000.2.0.jar differ diff --git a/lib2/libs/Cfp0SoaStrongModelFeaturePlanning_14000.2.0.jar b/lib2/libs/Cfp0SoaStrongModelFeaturePlanning_14000.2.0.jar new file mode 100644 index 0000000..8e8d0aa Binary files /dev/null and b/lib2/libs/Cfp0SoaStrongModelFeaturePlanning_14000.2.0.jar differ diff --git a/lib2/libs/Cip0SoaStrongModelControlInSPPlan_14000.2.0.jar b/lib2/libs/Cip0SoaStrongModelControlInSPPlan_14000.2.0.jar new file mode 100644 index 0000000..456bb27 Binary files /dev/null and b/lib2/libs/Cip0SoaStrongModelControlInSPPlan_14000.2.0.jar differ diff --git a/lib2/libs/Civ0SoaContMgmtS1000D40Loose_14000.2.0.jar b/lib2/libs/Civ0SoaContMgmtS1000D40Loose_14000.2.0.jar new file mode 100644 index 0000000..cb82d73 Binary files /dev/null and b/lib2/libs/Civ0SoaContMgmtS1000D40Loose_14000.2.0.jar differ diff --git a/lib2/libs/Civ0SoaContMgmtS1000D40Rac_14000.2.0.jar b/lib2/libs/Civ0SoaContMgmtS1000D40Rac_14000.2.0.jar new file mode 100644 index 0000000..03848c8 Binary files /dev/null and b/lib2/libs/Civ0SoaContMgmtS1000D40Rac_14000.2.0.jar differ diff --git a/lib2/libs/Civ0SoaContMgmtS1000D40Strong_14000.2.0.jar b/lib2/libs/Civ0SoaContMgmtS1000D40Strong_14000.2.0.jar new file mode 100644 index 0000000..b953a51 Binary files /dev/null and b/lib2/libs/Civ0SoaContMgmtS1000D40Strong_14000.2.0.jar differ diff --git a/lib2/libs/Cla0SoaClassificationCommonLoose_14000.2.0.jar b/lib2/libs/Cla0SoaClassificationCommonLoose_14000.2.0.jar new file mode 100644 index 0000000..65911f5 Binary files /dev/null and b/lib2/libs/Cla0SoaClassificationCommonLoose_14000.2.0.jar differ diff --git a/lib2/libs/Cla0SoaClassificationCommonRac_14000.2.0.jar b/lib2/libs/Cla0SoaClassificationCommonRac_14000.2.0.jar new file mode 100644 index 0000000..b022937 Binary files /dev/null and b/lib2/libs/Cla0SoaClassificationCommonRac_14000.2.0.jar differ diff --git a/lib2/libs/Cla0SoaClassificationCommonStrong_14000.2.0.jar b/lib2/libs/Cla0SoaClassificationCommonStrong_14000.2.0.jar new file mode 100644 index 0000000..d251175 Binary files /dev/null and b/lib2/libs/Cla0SoaClassificationCommonStrong_14000.2.0.jar differ diff --git a/lib2/libs/Clr0SoaColorAppearanceLoose_14000.2.0.jar b/lib2/libs/Clr0SoaColorAppearanceLoose_14000.2.0.jar new file mode 100644 index 0000000..b9573d3 Binary files /dev/null and b/lib2/libs/Clr0SoaColorAppearanceLoose_14000.2.0.jar differ diff --git a/lib2/libs/Clr0SoaColorAppearanceRac_14000.2.0.jar b/lib2/libs/Clr0SoaColorAppearanceRac_14000.2.0.jar new file mode 100644 index 0000000..24d6eb9 Binary files /dev/null and b/lib2/libs/Clr0SoaColorAppearanceRac_14000.2.0.jar differ diff --git a/lib2/libs/Clr0SoaColorAppearanceStrong_14000.2.0.jar b/lib2/libs/Clr0SoaColorAppearanceStrong_14000.2.0.jar new file mode 100644 index 0000000..d223735 Binary files /dev/null and b/lib2/libs/Clr0SoaColorAppearanceStrong_14000.2.0.jar differ diff --git a/lib2/libs/Clr0SoaStrongModelColorAppearance_14000.2.0.jar b/lib2/libs/Clr0SoaStrongModelColorAppearance_14000.2.0.jar new file mode 100644 index 0000000..fa3e698 Binary files /dev/null and b/lib2/libs/Clr0SoaStrongModelColorAppearance_14000.2.0.jar differ diff --git a/lib2/libs/Clr1SoaStrongModelColorRule_14000.2.0.jar b/lib2/libs/Clr1SoaStrongModelColorRule_14000.2.0.jar new file mode 100644 index 0000000..9d76af7 Binary files /dev/null and b/lib2/libs/Clr1SoaStrongModelColorRule_14000.2.0.jar differ diff --git a/lib2/libs/Cls0SoaClassificationCoreLoose_14000.2.0.jar b/lib2/libs/Cls0SoaClassificationCoreLoose_14000.2.0.jar new file mode 100644 index 0000000..2113fac Binary files /dev/null and b/lib2/libs/Cls0SoaClassificationCoreLoose_14000.2.0.jar differ diff --git a/lib2/libs/Cls0SoaClassificationCoreRac_14000.2.0.jar b/lib2/libs/Cls0SoaClassificationCoreRac_14000.2.0.jar new file mode 100644 index 0000000..5185f6b Binary files /dev/null and b/lib2/libs/Cls0SoaClassificationCoreRac_14000.2.0.jar differ diff --git a/lib2/libs/Cls0SoaClassificationCoreStrong_14000.2.0.jar b/lib2/libs/Cls0SoaClassificationCoreStrong_14000.2.0.jar new file mode 100644 index 0000000..22bd34e Binary files /dev/null and b/lib2/libs/Cls0SoaClassificationCoreStrong_14000.2.0.jar differ diff --git a/lib2/libs/Cp0SoaStrongModelComposites_14000.2.0.jar b/lib2/libs/Cp0SoaStrongModelComposites_14000.2.0.jar new file mode 100644 index 0000000..d522c1f Binary files /dev/null and b/lib2/libs/Cp0SoaStrongModelComposites_14000.2.0.jar differ diff --git a/lib2/libs/Cpd0SoaCpdCoreLoose_14000.2.0.jar b/lib2/libs/Cpd0SoaCpdCoreLoose_14000.2.0.jar new file mode 100644 index 0000000..f1a54ea Binary files /dev/null and b/lib2/libs/Cpd0SoaCpdCoreLoose_14000.2.0.jar differ diff --git a/lib2/libs/Cpd0SoaCpdCoreRac_14000.2.0.jar b/lib2/libs/Cpd0SoaCpdCoreRac_14000.2.0.jar new file mode 100644 index 0000000..1f4aa91 Binary files /dev/null and b/lib2/libs/Cpd0SoaCpdCoreRac_14000.2.0.jar differ diff --git a/lib2/libs/Cpd0SoaCpdCoreStrong_14000.2.0.jar b/lib2/libs/Cpd0SoaCpdCoreStrong_14000.2.0.jar new file mode 100644 index 0000000..1526f52 Binary files /dev/null and b/lib2/libs/Cpd0SoaCpdCoreStrong_14000.2.0.jar differ diff --git a/lib2/libs/Crf0SoaStrongModelCprFoundation_14000.2.0.jar b/lib2/libs/Crf0SoaStrongModelCprFoundation_14000.2.0.jar new file mode 100644 index 0000000..a1cd705 Binary files /dev/null and b/lib2/libs/Crf0SoaStrongModelCprFoundation_14000.2.0.jar differ diff --git a/lib2/libs/Crt0SoaStrongModelValidationContract_14000.2.0.jar b/lib2/libs/Crt0SoaStrongModelValidationContract_14000.2.0.jar new file mode 100644 index 0000000..1a6eb03 Binary files /dev/null and b/lib2/libs/Crt0SoaStrongModelValidationContract_14000.2.0.jar differ diff --git a/lib2/libs/Crt0SoaValidationContractLoose_14000.2.0.jar b/lib2/libs/Crt0SoaValidationContractLoose_14000.2.0.jar new file mode 100644 index 0000000..712dfe9 Binary files /dev/null and b/lib2/libs/Crt0SoaValidationContractLoose_14000.2.0.jar differ diff --git a/lib2/libs/Crt0SoaValidationContractRac_14000.2.0.jar b/lib2/libs/Crt0SoaValidationContractRac_14000.2.0.jar new file mode 100644 index 0000000..bf4df4d Binary files /dev/null and b/lib2/libs/Crt0SoaValidationContractRac_14000.2.0.jar differ diff --git a/lib2/libs/Crt0SoaValidationContractStrong_14000.2.0.jar b/lib2/libs/Crt0SoaValidationContractStrong_14000.2.0.jar new file mode 100644 index 0000000..3279f2f Binary files /dev/null and b/lib2/libs/Crt0SoaValidationContractStrong_14000.2.0.jar differ diff --git a/lib2/libs/Dia0SoaDiagrammingLoose_14000.2.0.jar b/lib2/libs/Dia0SoaDiagrammingLoose_14000.2.0.jar new file mode 100644 index 0000000..de8e850 Binary files /dev/null and b/lib2/libs/Dia0SoaDiagrammingLoose_14000.2.0.jar differ diff --git a/lib2/libs/Dia0SoaDiagrammingStrong_14000.2.0.jar b/lib2/libs/Dia0SoaDiagrammingStrong_14000.2.0.jar new file mode 100644 index 0000000..3970015 Binary files /dev/null and b/lib2/libs/Dia0SoaDiagrammingStrong_14000.2.0.jar differ diff --git a/lib2/libs/Ebm0SoaStrongModelEnterpriseBOM_14000.2.0.jar b/lib2/libs/Ebm0SoaStrongModelEnterpriseBOM_14000.2.0.jar new file mode 100644 index 0000000..17a1655 Binary files /dev/null and b/lib2/libs/Ebm0SoaStrongModelEnterpriseBOM_14000.2.0.jar differ diff --git a/lib2/libs/Ebm9SoaStrongModelCustomebom_14000.2.0.jar b/lib2/libs/Ebm9SoaStrongModelCustomebom_14000.2.0.jar new file mode 100644 index 0000000..5b6a9de Binary files /dev/null and b/lib2/libs/Ebm9SoaStrongModelCustomebom_14000.2.0.jar differ diff --git a/lib2/libs/Ec0SoaStrongModelEngChange_14000.2.0.jar b/lib2/libs/Ec0SoaStrongModelEngChange_14000.2.0.jar new file mode 100644 index 0000000..c49a8aa Binary files /dev/null and b/lib2/libs/Ec0SoaStrongModelEngChange_14000.2.0.jar differ diff --git a/lib2/libs/Eda0SoaEDMDCollabLoose_14000.2.0.jar b/lib2/libs/Eda0SoaEDMDCollabLoose_14000.2.0.jar new file mode 100644 index 0000000..bc7715c Binary files /dev/null and b/lib2/libs/Eda0SoaEDMDCollabLoose_14000.2.0.jar differ diff --git a/lib2/libs/Eda0SoaEDMDCollabRac_14000.2.0.jar b/lib2/libs/Eda0SoaEDMDCollabRac_14000.2.0.jar new file mode 100644 index 0000000..b23d115 Binary files /dev/null and b/lib2/libs/Eda0SoaEDMDCollabRac_14000.2.0.jar differ diff --git a/lib2/libs/Eda0SoaEDMDCollabStrong_14000.2.0.jar b/lib2/libs/Eda0SoaEDMDCollabStrong_14000.2.0.jar new file mode 100644 index 0000000..38d2d2e Binary files /dev/null and b/lib2/libs/Eda0SoaEDMDCollabStrong_14000.2.0.jar differ diff --git a/lib2/libs/Esm0SoaESMBaseLoose_14000.2.0.jar b/lib2/libs/Esm0SoaESMBaseLoose_14000.2.0.jar new file mode 100644 index 0000000..ab05e1c Binary files /dev/null and b/lib2/libs/Esm0SoaESMBaseLoose_14000.2.0.jar differ diff --git a/lib2/libs/Esm0SoaESMBaseRac_14000.2.0.jar b/lib2/libs/Esm0SoaESMBaseRac_14000.2.0.jar new file mode 100644 index 0000000..fe8c579 Binary files /dev/null and b/lib2/libs/Esm0SoaESMBaseRac_14000.2.0.jar differ diff --git a/lib2/libs/Esm0SoaESMBaseStrong_14000.2.0.jar b/lib2/libs/Esm0SoaESMBaseStrong_14000.2.0.jar new file mode 100644 index 0000000..d4ab351 Binary files /dev/null and b/lib2/libs/Esm0SoaESMBaseStrong_14000.2.0.jar differ diff --git a/lib2/libs/Esw0SoaStrongModelEsmgmt_14000.2.0.jar b/lib2/libs/Esw0SoaStrongModelEsmgmt_14000.2.0.jar new file mode 100644 index 0000000..965d6a5 Binary files /dev/null and b/lib2/libs/Esw0SoaStrongModelEsmgmt_14000.2.0.jar differ diff --git a/lib2/libs/Fdp0SoaFourDPlanningLoose_14000.2.0.jar b/lib2/libs/Fdp0SoaFourDPlanningLoose_14000.2.0.jar new file mode 100644 index 0000000..726b59a Binary files /dev/null and b/lib2/libs/Fdp0SoaFourDPlanningLoose_14000.2.0.jar differ diff --git a/lib2/libs/Fdp0SoaFourDPlanningRac_14000.2.0.jar b/lib2/libs/Fdp0SoaFourDPlanningRac_14000.2.0.jar new file mode 100644 index 0000000..248e960 Binary files /dev/null and b/lib2/libs/Fdp0SoaFourDPlanningRac_14000.2.0.jar differ diff --git a/lib2/libs/Fdp0SoaFourDPlanningStrong_14000.2.0.jar b/lib2/libs/Fdp0SoaFourDPlanningStrong_14000.2.0.jar new file mode 100644 index 0000000..5dcb3ae Binary files /dev/null and b/lib2/libs/Fdp0SoaFourDPlanningStrong_14000.2.0.jar differ diff --git a/lib2/libs/Fdp0SoaStrongModelFourDPlanning_14000.2.0.jar b/lib2/libs/Fdp0SoaStrongModelFourDPlanning_14000.2.0.jar new file mode 100644 index 0000000..2988161 Binary files /dev/null and b/lib2/libs/Fdp0SoaStrongModelFourDPlanning_14000.2.0.jar differ diff --git a/lib2/libs/Fha0SoaStrongModelFHAnalysis_14000.2.0.jar b/lib2/libs/Fha0SoaStrongModelFHAnalysis_14000.2.0.jar new file mode 100644 index 0000000..bd58a7c Binary files /dev/null and b/lib2/libs/Fha0SoaStrongModelFHAnalysis_14000.2.0.jar differ diff --git a/lib2/libs/Fnd0SoaAuditManagerLoose_14000.2.0.jar b/lib2/libs/Fnd0SoaAuditManagerLoose_14000.2.0.jar new file mode 100644 index 0000000..ee479fb Binary files /dev/null and b/lib2/libs/Fnd0SoaAuditManagerLoose_14000.2.0.jar differ diff --git a/lib2/libs/Fnd0SoaAuditManagerRac_14000.2.0.jar b/lib2/libs/Fnd0SoaAuditManagerRac_14000.2.0.jar new file mode 100644 index 0000000..cf5921e Binary files /dev/null and b/lib2/libs/Fnd0SoaAuditManagerRac_14000.2.0.jar differ diff --git a/lib2/libs/Fnd0SoaAuditManagerStrong_14000.2.0.jar b/lib2/libs/Fnd0SoaAuditManagerStrong_14000.2.0.jar new file mode 100644 index 0000000..ba5f7b4 Binary files /dev/null and b/lib2/libs/Fnd0SoaAuditManagerStrong_14000.2.0.jar differ diff --git a/lib2/libs/Fnd0SoaConfigFilterCriteriaLoose_14000.2.0.jar b/lib2/libs/Fnd0SoaConfigFilterCriteriaLoose_14000.2.0.jar new file mode 100644 index 0000000..9eb795b Binary files /dev/null and b/lib2/libs/Fnd0SoaConfigFilterCriteriaLoose_14000.2.0.jar differ diff --git a/lib2/libs/Fnd0SoaConfigFilterCriteriaRac_14000.2.0.jar b/lib2/libs/Fnd0SoaConfigFilterCriteriaRac_14000.2.0.jar new file mode 100644 index 0000000..50a294a Binary files /dev/null and b/lib2/libs/Fnd0SoaConfigFilterCriteriaRac_14000.2.0.jar differ diff --git a/lib2/libs/Fnd0SoaConfigFilterCriteriaStrong_14000.2.0.jar b/lib2/libs/Fnd0SoaConfigFilterCriteriaStrong_14000.2.0.jar new file mode 100644 index 0000000..af82982 Binary files /dev/null and b/lib2/libs/Fnd0SoaConfigFilterCriteriaStrong_14000.2.0.jar differ diff --git a/lib2/libs/Fnd0SoaDiagrammingLoose_14000.2.0.jar b/lib2/libs/Fnd0SoaDiagrammingLoose_14000.2.0.jar new file mode 100644 index 0000000..0d269a3 Binary files /dev/null and b/lib2/libs/Fnd0SoaDiagrammingLoose_14000.2.0.jar differ diff --git a/lib2/libs/Fnd0SoaDiagrammingRac_14000.2.0.jar b/lib2/libs/Fnd0SoaDiagrammingRac_14000.2.0.jar new file mode 100644 index 0000000..2e42e9d Binary files /dev/null and b/lib2/libs/Fnd0SoaDiagrammingRac_14000.2.0.jar differ diff --git a/lib2/libs/Fnd0SoaDiagrammingStrong_14000.2.0.jar b/lib2/libs/Fnd0SoaDiagrammingStrong_14000.2.0.jar new file mode 100644 index 0000000..62136bd Binary files /dev/null and b/lib2/libs/Fnd0SoaDiagrammingStrong_14000.2.0.jar differ diff --git a/lib2/libs/Fnd0SoaEditContextLoose_14000.2.0.jar b/lib2/libs/Fnd0SoaEditContextLoose_14000.2.0.jar new file mode 100644 index 0000000..882a676 Binary files /dev/null and b/lib2/libs/Fnd0SoaEditContextLoose_14000.2.0.jar differ diff --git a/lib2/libs/Fnd0SoaEditContextRac_14000.2.0.jar b/lib2/libs/Fnd0SoaEditContextRac_14000.2.0.jar new file mode 100644 index 0000000..71bd118 Binary files /dev/null and b/lib2/libs/Fnd0SoaEditContextRac_14000.2.0.jar differ diff --git a/lib2/libs/Fnd0SoaEditContextStrong_14000.2.0.jar b/lib2/libs/Fnd0SoaEditContextStrong_14000.2.0.jar new file mode 100644 index 0000000..3a62fe8 Binary files /dev/null and b/lib2/libs/Fnd0SoaEditContextStrong_14000.2.0.jar differ diff --git a/lib2/libs/Fnd0SoaNotificationLoose_14000.2.0.jar b/lib2/libs/Fnd0SoaNotificationLoose_14000.2.0.jar new file mode 100644 index 0000000..9033263 Binary files /dev/null and b/lib2/libs/Fnd0SoaNotificationLoose_14000.2.0.jar differ diff --git a/lib2/libs/Fnd0SoaNotificationRac_14000.2.0.jar b/lib2/libs/Fnd0SoaNotificationRac_14000.2.0.jar new file mode 100644 index 0000000..1004c8e Binary files /dev/null and b/lib2/libs/Fnd0SoaNotificationRac_14000.2.0.jar differ diff --git a/lib2/libs/Fnd0SoaNotificationStrong_14000.2.0.jar b/lib2/libs/Fnd0SoaNotificationStrong_14000.2.0.jar new file mode 100644 index 0000000..0725676 Binary files /dev/null and b/lib2/libs/Fnd0SoaNotificationStrong_14000.2.0.jar differ diff --git a/lib2/libs/Fnd0SoaParticipantLoose_14000.2.0.jar b/lib2/libs/Fnd0SoaParticipantLoose_14000.2.0.jar new file mode 100644 index 0000000..424555d Binary files /dev/null and b/lib2/libs/Fnd0SoaParticipantLoose_14000.2.0.jar differ diff --git a/lib2/libs/Fnd0SoaParticipantRac_14000.2.0.jar b/lib2/libs/Fnd0SoaParticipantRac_14000.2.0.jar new file mode 100644 index 0000000..677b4f2 Binary files /dev/null and b/lib2/libs/Fnd0SoaParticipantRac_14000.2.0.jar differ diff --git a/lib2/libs/Fnd0SoaParticipantStrong_14000.2.0.jar b/lib2/libs/Fnd0SoaParticipantStrong_14000.2.0.jar new file mode 100644 index 0000000..0b81cb4 Binary files /dev/null and b/lib2/libs/Fnd0SoaParticipantStrong_14000.2.0.jar differ diff --git a/lib2/libs/Fnd0SoaQualificationLoose_14000.2.0.jar b/lib2/libs/Fnd0SoaQualificationLoose_14000.2.0.jar new file mode 100644 index 0000000..9b6babd Binary files /dev/null and b/lib2/libs/Fnd0SoaQualificationLoose_14000.2.0.jar differ diff --git a/lib2/libs/Fnd0SoaQualificationRac_14000.2.0.jar b/lib2/libs/Fnd0SoaQualificationRac_14000.2.0.jar new file mode 100644 index 0000000..fdc593f Binary files /dev/null and b/lib2/libs/Fnd0SoaQualificationRac_14000.2.0.jar differ diff --git a/lib2/libs/Fnd0SoaQualificationStrong_14000.2.0.jar b/lib2/libs/Fnd0SoaQualificationStrong_14000.2.0.jar new file mode 100644 index 0000000..3ecad5b Binary files /dev/null and b/lib2/libs/Fnd0SoaQualificationStrong_14000.2.0.jar differ diff --git a/lib2/libs/Fnd0SoaUiConfigLoose_14000.2.0.jar b/lib2/libs/Fnd0SoaUiConfigLoose_14000.2.0.jar new file mode 100644 index 0000000..63fdb3c Binary files /dev/null and b/lib2/libs/Fnd0SoaUiConfigLoose_14000.2.0.jar differ diff --git a/lib2/libs/Fnd0SoaUiConfigStrong_14000.2.0.jar b/lib2/libs/Fnd0SoaUiConfigStrong_14000.2.0.jar new file mode 100644 index 0000000..7aa0a07 Binary files /dev/null and b/lib2/libs/Fnd0SoaUiConfigStrong_14000.2.0.jar differ diff --git a/lib2/libs/Fnd0SoaWProxyLoose_14000.2.0.jar b/lib2/libs/Fnd0SoaWProxyLoose_14000.2.0.jar new file mode 100644 index 0000000..5172338 Binary files /dev/null and b/lib2/libs/Fnd0SoaWProxyLoose_14000.2.0.jar differ diff --git a/lib2/libs/Fnd0SoaWProxyRac_14000.2.0.jar b/lib2/libs/Fnd0SoaWProxyRac_14000.2.0.jar new file mode 100644 index 0000000..ad2ac43 Binary files /dev/null and b/lib2/libs/Fnd0SoaWProxyRac_14000.2.0.jar differ diff --git a/lib2/libs/Fnd0SoaWProxyStrong_14000.2.0.jar b/lib2/libs/Fnd0SoaWProxyStrong_14000.2.0.jar new file mode 100644 index 0000000..6a61ec3 Binary files /dev/null and b/lib2/libs/Fnd0SoaWProxyStrong_14000.2.0.jar differ diff --git a/lib2/libs/IAV0SoaStrongModelVerificationManagement_14000.2.0.jar b/lib2/libs/IAV0SoaStrongModelVerificationManagement_14000.2.0.jar new file mode 100644 index 0000000..3bf334a Binary files /dev/null and b/lib2/libs/IAV0SoaStrongModelVerificationManagement_14000.2.0.jar differ diff --git a/lib2/libs/Icp0SoaStrongModelCampaignMgmt_14000.2.0.jar b/lib2/libs/Icp0SoaStrongModelCampaignMgmt_14000.2.0.jar new file mode 100644 index 0000000..a17315f Binary files /dev/null and b/lib2/libs/Icp0SoaStrongModelCampaignMgmt_14000.2.0.jar differ diff --git a/lib2/libs/Iim0SoaStrongModelIdeaMgmt_14000.2.0.jar b/lib2/libs/Iim0SoaStrongModelIdeaMgmt_14000.2.0.jar new file mode 100644 index 0000000..68250a8 Binary files /dev/null and b/lib2/libs/Iim0SoaStrongModelIdeaMgmt_14000.2.0.jar differ diff --git a/lib2/libs/Im0SoaStrongModelIndustryMachinery_14000.2.0.jar b/lib2/libs/Im0SoaStrongModelIndustryMachinery_14000.2.0.jar new file mode 100644 index 0000000..d0b820c Binary files /dev/null and b/lib2/libs/Im0SoaStrongModelIndustryMachinery_14000.2.0.jar differ diff --git a/lib2/libs/Imd0SoaMedicalDeviceLoose_14000.2.0.jar b/lib2/libs/Imd0SoaMedicalDeviceLoose_14000.2.0.jar new file mode 100644 index 0000000..c29e68e Binary files /dev/null and b/lib2/libs/Imd0SoaMedicalDeviceLoose_14000.2.0.jar differ diff --git a/lib2/libs/Imd0SoaMedicalDeviceStrong_14000.2.0.jar b/lib2/libs/Imd0SoaMedicalDeviceStrong_14000.2.0.jar new file mode 100644 index 0000000..453d537 Binary files /dev/null and b/lib2/libs/Imd0SoaMedicalDeviceStrong_14000.2.0.jar differ diff --git a/lib2/libs/Imd0SoaStrongModelMedicalDevice_14000.2.0.jar b/lib2/libs/Imd0SoaStrongModelMedicalDevice_14000.2.0.jar new file mode 100644 index 0000000..f8cada1 Binary files /dev/null and b/lib2/libs/Imd0SoaStrongModelMedicalDevice_14000.2.0.jar differ diff --git a/lib2/libs/Imp0SoaLabelManagementLoose_14000.2.0.jar b/lib2/libs/Imp0SoaLabelManagementLoose_14000.2.0.jar new file mode 100644 index 0000000..40f6330 Binary files /dev/null and b/lib2/libs/Imp0SoaLabelManagementLoose_14000.2.0.jar differ diff --git a/lib2/libs/Imp0SoaLabelManagementRac_14000.2.0.jar b/lib2/libs/Imp0SoaLabelManagementRac_14000.2.0.jar new file mode 100644 index 0000000..cd16203 Binary files /dev/null and b/lib2/libs/Imp0SoaLabelManagementRac_14000.2.0.jar differ diff --git a/lib2/libs/Imp0SoaLabelManagementStrong_14000.2.0.jar b/lib2/libs/Imp0SoaLabelManagementStrong_14000.2.0.jar new file mode 100644 index 0000000..8385f6b Binary files /dev/null and b/lib2/libs/Imp0SoaLabelManagementStrong_14000.2.0.jar differ diff --git a/lib2/libs/Imp0SoaStrongModelLabelManagement_14000.2.0.jar b/lib2/libs/Imp0SoaStrongModelLabelManagement_14000.2.0.jar new file mode 100644 index 0000000..e50a215 Binary files /dev/null and b/lib2/libs/Imp0SoaStrongModelLabelManagement_14000.2.0.jar differ diff --git a/lib2/libs/Ipm0SoaStrongModelIntegProgMgmt_14000.2.0.jar b/lib2/libs/Ipm0SoaStrongModelIntegProgMgmt_14000.2.0.jar new file mode 100644 index 0000000..1e99ebf Binary files /dev/null and b/lib2/libs/Ipm0SoaStrongModelIntegProgMgmt_14000.2.0.jar differ diff --git a/lib2/libs/Ipt0SoaStrongModelTC4IPMgmt_14000.2.0.jar b/lib2/libs/Ipt0SoaStrongModelTC4IPMgmt_14000.2.0.jar new file mode 100644 index 0000000..51a27a7 Binary files /dev/null and b/lib2/libs/Ipt0SoaStrongModelTC4IPMgmt_14000.2.0.jar differ diff --git a/lib2/libs/Isi0SoaStrongModelIPManagement_14000.2.0.jar b/lib2/libs/Isi0SoaStrongModelIPManagement_14000.2.0.jar new file mode 100644 index 0000000..2b823db Binary files /dev/null and b/lib2/libs/Isi0SoaStrongModelIPManagement_14000.2.0.jar differ diff --git a/lib2/libs/Lbr0SoaLibraryManagementLoose_14000.2.0.jar b/lib2/libs/Lbr0SoaLibraryManagementLoose_14000.2.0.jar new file mode 100644 index 0000000..b4647ad Binary files /dev/null and b/lib2/libs/Lbr0SoaLibraryManagementLoose_14000.2.0.jar differ diff --git a/lib2/libs/Lbr0SoaLibraryManagementRac_14000.2.0.jar b/lib2/libs/Lbr0SoaLibraryManagementRac_14000.2.0.jar new file mode 100644 index 0000000..ce17fad Binary files /dev/null and b/lib2/libs/Lbr0SoaLibraryManagementRac_14000.2.0.jar differ diff --git a/lib2/libs/Lbr0SoaLibraryManagementStrong_14000.2.0.jar b/lib2/libs/Lbr0SoaLibraryManagementStrong_14000.2.0.jar new file mode 100644 index 0000000..314e2b1 Binary files /dev/null and b/lib2/libs/Lbr0SoaLibraryManagementStrong_14000.2.0.jar differ diff --git a/lib2/libs/Les0SoaStrongModelLisesm_14000.2.0.jar b/lib2/libs/Les0SoaStrongModelLisesm_14000.2.0.jar new file mode 100644 index 0000000..b245aae Binary files /dev/null and b/lib2/libs/Les0SoaStrongModelLisesm_14000.2.0.jar differ diff --git a/lib2/libs/Lgt0SoaLogisticsLoose_14000.2.0.jar b/lib2/libs/Lgt0SoaLogisticsLoose_14000.2.0.jar new file mode 100644 index 0000000..201543e Binary files /dev/null and b/lib2/libs/Lgt0SoaLogisticsLoose_14000.2.0.jar differ diff --git a/lib2/libs/Lgt0SoaLogisticsRac_14000.2.0.jar b/lib2/libs/Lgt0SoaLogisticsRac_14000.2.0.jar new file mode 100644 index 0000000..d0a028d Binary files /dev/null and b/lib2/libs/Lgt0SoaLogisticsRac_14000.2.0.jar differ diff --git a/lib2/libs/Lgt0SoaLogisticsStrong_14000.2.0.jar b/lib2/libs/Lgt0SoaLogisticsStrong_14000.2.0.jar new file mode 100644 index 0000000..35da827 Binary files /dev/null and b/lib2/libs/Lgt0SoaLogisticsStrong_14000.2.0.jar differ diff --git a/lib2/libs/Lgt0SoaStrongModelLogistics_14000.2.0.jar b/lib2/libs/Lgt0SoaStrongModelLogistics_14000.2.0.jar new file mode 100644 index 0000000..e178870 Binary files /dev/null and b/lib2/libs/Lgt0SoaStrongModelLogistics_14000.2.0.jar differ diff --git a/lib2/libs/Lis0SoaLdfLoose_14000.2.0.jar b/lib2/libs/Lis0SoaLdfLoose_14000.2.0.jar new file mode 100644 index 0000000..6a7961b Binary files /dev/null and b/lib2/libs/Lis0SoaLdfLoose_14000.2.0.jar differ diff --git a/lib2/libs/Lis0SoaLdfRac_14000.2.0.jar b/lib2/libs/Lis0SoaLdfRac_14000.2.0.jar new file mode 100644 index 0000000..71cd71c Binary files /dev/null and b/lib2/libs/Lis0SoaLdfRac_14000.2.0.jar differ diff --git a/lib2/libs/Lis0SoaLdfStrong_14000.2.0.jar b/lib2/libs/Lis0SoaLdfStrong_14000.2.0.jar new file mode 100644 index 0000000..921bafe Binary files /dev/null and b/lib2/libs/Lis0SoaLdfStrong_14000.2.0.jar differ diff --git a/lib2/libs/Lis0SoaStrongModelLdf_14000.2.0.jar b/lib2/libs/Lis0SoaStrongModelLdf_14000.2.0.jar new file mode 100644 index 0000000..c3e5446 Binary files /dev/null and b/lib2/libs/Lis0SoaStrongModelLdf_14000.2.0.jar differ diff --git a/lib2/libs/Lrm0SoaStrongModelLisrm_14000.2.0.jar b/lib2/libs/Lrm0SoaStrongModelLisrm_14000.2.0.jar new file mode 100644 index 0000000..3e450f3 Binary files /dev/null and b/lib2/libs/Lrm0SoaStrongModelLisrm_14000.2.0.jar differ diff --git a/lib2/libs/Mat1SoaMaterialMgmtLoose_14000.2.0.jar b/lib2/libs/Mat1SoaMaterialMgmtLoose_14000.2.0.jar new file mode 100644 index 0000000..bd13072 Binary files /dev/null and b/lib2/libs/Mat1SoaMaterialMgmtLoose_14000.2.0.jar differ diff --git a/lib2/libs/Mat1SoaMaterialMgmtRac_14000.2.0.jar b/lib2/libs/Mat1SoaMaterialMgmtRac_14000.2.0.jar new file mode 100644 index 0000000..ac188fa Binary files /dev/null and b/lib2/libs/Mat1SoaMaterialMgmtRac_14000.2.0.jar differ diff --git a/lib2/libs/Mat1SoaMaterialMgmtStrong_14000.2.0.jar b/lib2/libs/Mat1SoaMaterialMgmtStrong_14000.2.0.jar new file mode 100644 index 0000000..c18945b Binary files /dev/null and b/lib2/libs/Mat1SoaMaterialMgmtStrong_14000.2.0.jar differ diff --git a/lib2/libs/Mci0SoaPMIManagementLoose_14000.2.0.jar b/lib2/libs/Mci0SoaPMIManagementLoose_14000.2.0.jar new file mode 100644 index 0000000..8e7361d Binary files /dev/null and b/lib2/libs/Mci0SoaPMIManagementLoose_14000.2.0.jar differ diff --git a/lib2/libs/Mci0SoaPMIManagementRac_14000.2.0.jar b/lib2/libs/Mci0SoaPMIManagementRac_14000.2.0.jar new file mode 100644 index 0000000..84aae12 Binary files /dev/null and b/lib2/libs/Mci0SoaPMIManagementRac_14000.2.0.jar differ diff --git a/lib2/libs/Mci0SoaPMIManagementStrong_14000.2.0.jar b/lib2/libs/Mci0SoaPMIManagementStrong_14000.2.0.jar new file mode 100644 index 0000000..15a4419 Binary files /dev/null and b/lib2/libs/Mci0SoaPMIManagementStrong_14000.2.0.jar differ diff --git a/lib2/libs/Mci0SoaStrongModelPMIManagement_14000.2.0.jar b/lib2/libs/Mci0SoaStrongModelPMIManagement_14000.2.0.jar new file mode 100644 index 0000000..c2194c7 Binary files /dev/null and b/lib2/libs/Mci0SoaStrongModelPMIManagement_14000.2.0.jar differ diff --git a/lib2/libs/Mdc0SoaMDConnectivityLoose_14000.2.0.jar b/lib2/libs/Mdc0SoaMDConnectivityLoose_14000.2.0.jar new file mode 100644 index 0000000..c98c649 Binary files /dev/null and b/lib2/libs/Mdc0SoaMDConnectivityLoose_14000.2.0.jar differ diff --git a/lib2/libs/Mdc0SoaMDConnectivityStrong_14000.2.0.jar b/lib2/libs/Mdc0SoaMDConnectivityStrong_14000.2.0.jar new file mode 100644 index 0000000..df3214b Binary files /dev/null and b/lib2/libs/Mdc0SoaMDConnectivityStrong_14000.2.0.jar differ diff --git a/lib2/libs/Mdl0SoaModelCoreLoose_14000.2.0.jar b/lib2/libs/Mdl0SoaModelCoreLoose_14000.2.0.jar new file mode 100644 index 0000000..0160e33 Binary files /dev/null and b/lib2/libs/Mdl0SoaModelCoreLoose_14000.2.0.jar differ diff --git a/lib2/libs/Mdl0SoaModelCoreRac_14000.2.0.jar b/lib2/libs/Mdl0SoaModelCoreRac_14000.2.0.jar new file mode 100644 index 0000000..f589b3c Binary files /dev/null and b/lib2/libs/Mdl0SoaModelCoreRac_14000.2.0.jar differ diff --git a/lib2/libs/Mdl0SoaModelCoreStrong_14000.2.0.jar b/lib2/libs/Mdl0SoaModelCoreStrong_14000.2.0.jar new file mode 100644 index 0000000..13cfbb7 Binary files /dev/null and b/lib2/libs/Mdl0SoaModelCoreStrong_14000.2.0.jar differ diff --git a/lib2/libs/Mdo0SoaMDOManagementLoose_14000.2.0.jar b/lib2/libs/Mdo0SoaMDOManagementLoose_14000.2.0.jar new file mode 100644 index 0000000..689c95f Binary files /dev/null and b/lib2/libs/Mdo0SoaMDOManagementLoose_14000.2.0.jar differ diff --git a/lib2/libs/Mdo0SoaMDOManagementRac_14000.2.0.jar b/lib2/libs/Mdo0SoaMDOManagementRac_14000.2.0.jar new file mode 100644 index 0000000..7a30796 Binary files /dev/null and b/lib2/libs/Mdo0SoaMDOManagementRac_14000.2.0.jar differ diff --git a/lib2/libs/Mdo0SoaMDOManagementStrong_14000.2.0.jar b/lib2/libs/Mdo0SoaMDOManagementStrong_14000.2.0.jar new file mode 100644 index 0000000..0a1f352 Binary files /dev/null and b/lib2/libs/Mdo0SoaMDOManagementStrong_14000.2.0.jar differ diff --git a/lib2/libs/Mdo0SoaStrongModelMdo_14000.2.0.jar b/lib2/libs/Mdo0SoaStrongModelMdo_14000.2.0.jar new file mode 100644 index 0000000..2a2ff19 Binary files /dev/null and b/lib2/libs/Mdo0SoaStrongModelMdo_14000.2.0.jar differ diff --git a/lib2/libs/Mds0SoaStrongModelMedDevFoundation_14000.2.0.jar b/lib2/libs/Mds0SoaStrongModelMedDevFoundation_14000.2.0.jar new file mode 100644 index 0000000..f01affd Binary files /dev/null and b/lib2/libs/Mds0SoaStrongModelMedDevFoundation_14000.2.0.jar differ diff --git a/lib2/libs/Mea0SoaStrongModelMea0Fpam_14000.2.0.jar b/lib2/libs/Mea0SoaStrongModelMea0Fpam_14000.2.0.jar new file mode 100644 index 0000000..8ad972a Binary files /dev/null and b/lib2/libs/Mea0SoaStrongModelMea0Fpam_14000.2.0.jar differ diff --git a/lib2/libs/Mei0SoaMESIntegLoose_14000.2.0.jar b/lib2/libs/Mei0SoaMESIntegLoose_14000.2.0.jar new file mode 100644 index 0000000..6c1dfe8 Binary files /dev/null and b/lib2/libs/Mei0SoaMESIntegLoose_14000.2.0.jar differ diff --git a/lib2/libs/Mei0SoaMESIntegRac_14000.2.0.jar b/lib2/libs/Mei0SoaMESIntegRac_14000.2.0.jar new file mode 100644 index 0000000..f6b9905 Binary files /dev/null and b/lib2/libs/Mei0SoaMESIntegRac_14000.2.0.jar differ diff --git a/lib2/libs/Mei0SoaMESIntegStrong_14000.2.0.jar b/lib2/libs/Mei0SoaMESIntegStrong_14000.2.0.jar new file mode 100644 index 0000000..d177707 Binary files /dev/null and b/lib2/libs/Mei0SoaMESIntegStrong_14000.2.0.jar differ diff --git a/lib2/libs/Mei0SoaStrongModelMESInteg_14000.2.0.jar b/lib2/libs/Mei0SoaStrongModelMESInteg_14000.2.0.jar new file mode 100644 index 0000000..a6d7891 Binary files /dev/null and b/lib2/libs/Mei0SoaStrongModelMESInteg_14000.2.0.jar differ diff --git a/lib2/libs/Mq0SoaStrongModelHara_14000.2.0.jar b/lib2/libs/Mq0SoaStrongModelHara_14000.2.0.jar new file mode 100644 index 0000000..7f417d7 Binary files /dev/null and b/lib2/libs/Mq0SoaStrongModelHara_14000.2.0.jar differ diff --git a/lib2/libs/Nxc0SoaTcinCpdLoose_14000.2.0.jar b/lib2/libs/Nxc0SoaTcinCpdLoose_14000.2.0.jar new file mode 100644 index 0000000..0715220 Binary files /dev/null and b/lib2/libs/Nxc0SoaTcinCpdLoose_14000.2.0.jar differ diff --git a/lib2/libs/Nxc0SoaTcinCpdRac_14000.2.0.jar b/lib2/libs/Nxc0SoaTcinCpdRac_14000.2.0.jar new file mode 100644 index 0000000..73f8a29 Binary files /dev/null and b/lib2/libs/Nxc0SoaTcinCpdRac_14000.2.0.jar differ diff --git a/lib2/libs/Nxc0SoaTcinCpdStrong_14000.2.0.jar b/lib2/libs/Nxc0SoaTcinCpdStrong_14000.2.0.jar new file mode 100644 index 0000000..a9f8a91 Binary files /dev/null and b/lib2/libs/Nxc0SoaTcinCpdStrong_14000.2.0.jar differ diff --git a/lib2/libs/Nxl0SoaStrongModelLogical_14000.2.0.jar b/lib2/libs/Nxl0SoaStrongModelLogical_14000.2.0.jar new file mode 100644 index 0000000..09412a5 Binary files /dev/null and b/lib2/libs/Nxl0SoaStrongModelLogical_14000.2.0.jar differ diff --git a/lib2/libs/Ods0SoaObjectDataServicesLoose_14000.2.0.jar b/lib2/libs/Ods0SoaObjectDataServicesLoose_14000.2.0.jar new file mode 100644 index 0000000..498de88 Binary files /dev/null and b/lib2/libs/Ods0SoaObjectDataServicesLoose_14000.2.0.jar differ diff --git a/lib2/libs/Ods0SoaObjectDataServicesRac_14000.2.0.jar b/lib2/libs/Ods0SoaObjectDataServicesRac_14000.2.0.jar new file mode 100644 index 0000000..fb90722 Binary files /dev/null and b/lib2/libs/Ods0SoaObjectDataServicesRac_14000.2.0.jar differ diff --git a/lib2/libs/Ods0SoaObjectDataServicesStrong_14000.2.0.jar b/lib2/libs/Ods0SoaObjectDataServicesStrong_14000.2.0.jar new file mode 100644 index 0000000..2f6e9fc Binary files /dev/null and b/lib2/libs/Ods0SoaObjectDataServicesStrong_14000.2.0.jar differ diff --git a/lib2/libs/Ods0SoaStrongModelObjectDataServices_14000.2.0.jar b/lib2/libs/Ods0SoaStrongModelObjectDataServices_14000.2.0.jar new file mode 100644 index 0000000..dc1de35 Binary files /dev/null and b/lib2/libs/Ods0SoaStrongModelObjectDataServices_14000.2.0.jar differ diff --git a/lib2/libs/Ods9SoaStrongModelObjectDataServicesTest_14000.2.0.jar b/lib2/libs/Ods9SoaStrongModelObjectDataServicesTest_14000.2.0.jar new file mode 100644 index 0000000..e243e0d Binary files /dev/null and b/lib2/libs/Ods9SoaStrongModelObjectDataServicesTest_14000.2.0.jar differ diff --git a/lib2/libs/Oo1SoaOfficeOnlineLoose_14000.2.0.jar b/lib2/libs/Oo1SoaOfficeOnlineLoose_14000.2.0.jar new file mode 100644 index 0000000..f507f9b Binary files /dev/null and b/lib2/libs/Oo1SoaOfficeOnlineLoose_14000.2.0.jar differ diff --git a/lib2/libs/Oo1SoaOfficeOnlineRac_14000.2.0.jar b/lib2/libs/Oo1SoaOfficeOnlineRac_14000.2.0.jar new file mode 100644 index 0000000..bfbca5a Binary files /dev/null and b/lib2/libs/Oo1SoaOfficeOnlineRac_14000.2.0.jar differ diff --git a/lib2/libs/Oo1SoaOfficeOnlineStrong_14000.2.0.jar b/lib2/libs/Oo1SoaOfficeOnlineStrong_14000.2.0.jar new file mode 100644 index 0000000..6fb3280 Binary files /dev/null and b/lib2/libs/Oo1SoaOfficeOnlineStrong_14000.2.0.jar differ diff --git a/lib2/libs/Ord0SoaStrongModelOrderManagement_14000.2.0.jar b/lib2/libs/Ord0SoaStrongModelOrderManagement_14000.2.0.jar new file mode 100644 index 0000000..fe53909 Binary files /dev/null and b/lib2/libs/Ord0SoaStrongModelOrderManagement_14000.2.0.jar differ diff --git a/lib2/libs/Osl0SoaStrongModelLISOSLC_14000.2.0.jar b/lib2/libs/Osl0SoaStrongModelLISOSLC_14000.2.0.jar new file mode 100644 index 0000000..25a9fec Binary files /dev/null and b/lib2/libs/Osl0SoaStrongModelLISOSLC_14000.2.0.jar differ diff --git a/lib2/libs/Pdg0SoaStrongModelPtnDesignGdlines_14000.2.0.jar b/lib2/libs/Pdg0SoaStrongModelPtnDesignGdlines_14000.2.0.jar new file mode 100644 index 0000000..2d3f452 Binary files /dev/null and b/lib2/libs/Pdg0SoaStrongModelPtnDesignGdlines_14000.2.0.jar differ diff --git a/lib2/libs/Pdm0SoaPlantDataMgmtLoose_14000.2.0.jar b/lib2/libs/Pdm0SoaPlantDataMgmtLoose_14000.2.0.jar new file mode 100644 index 0000000..915633d Binary files /dev/null and b/lib2/libs/Pdm0SoaPlantDataMgmtLoose_14000.2.0.jar differ diff --git a/lib2/libs/Pdm0SoaPlantDataMgmtStrong_14000.2.0.jar b/lib2/libs/Pdm0SoaPlantDataMgmtStrong_14000.2.0.jar new file mode 100644 index 0000000..b9f7d0a Binary files /dev/null and b/lib2/libs/Pdm0SoaPlantDataMgmtStrong_14000.2.0.jar differ diff --git a/lib2/libs/Pdm0SoaStrongModelPlantDataMgmt_14000.2.0.jar b/lib2/libs/Pdm0SoaStrongModelPlantDataMgmt_14000.2.0.jar new file mode 100644 index 0000000..41a157d Binary files /dev/null and b/lib2/libs/Pdm0SoaStrongModelPlantDataMgmt_14000.2.0.jar differ diff --git a/lib2/libs/Pfp0SoaFeaturePlanningLoose_14000.2.0.jar b/lib2/libs/Pfp0SoaFeaturePlanningLoose_14000.2.0.jar new file mode 100644 index 0000000..b7a2ee4 Binary files /dev/null and b/lib2/libs/Pfp0SoaFeaturePlanningLoose_14000.2.0.jar differ diff --git a/lib2/libs/Pfp0SoaFeaturePlanningStrong_14000.2.0.jar b/lib2/libs/Pfp0SoaFeaturePlanningStrong_14000.2.0.jar new file mode 100644 index 0000000..cc20f94 Binary files /dev/null and b/lib2/libs/Pfp0SoaFeaturePlanningStrong_14000.2.0.jar differ diff --git a/lib2/libs/Pma0SoaStrongModelAutomation_14000.2.0.jar b/lib2/libs/Pma0SoaStrongModelAutomation_14000.2.0.jar new file mode 100644 index 0000000..03a5c2c Binary files /dev/null and b/lib2/libs/Pma0SoaStrongModelAutomation_14000.2.0.jar differ diff --git a/lib2/libs/Pmg0SoaStrongModelCpMgmt_14000.2.0.jar b/lib2/libs/Pmg0SoaStrongModelCpMgmt_14000.2.0.jar new file mode 100644 index 0000000..5da7e38 Binary files /dev/null and b/lib2/libs/Pmg0SoaStrongModelCpMgmt_14000.2.0.jar differ diff --git a/lib2/libs/Prg0SoaProgramInfraLoose_14000.2.0.jar b/lib2/libs/Prg0SoaProgramInfraLoose_14000.2.0.jar new file mode 100644 index 0000000..a66b9ed Binary files /dev/null and b/lib2/libs/Prg0SoaProgramInfraLoose_14000.2.0.jar differ diff --git a/lib2/libs/Prg0SoaProgramInfraStrong_14000.2.0.jar b/lib2/libs/Prg0SoaProgramInfraStrong_14000.2.0.jar new file mode 100644 index 0000000..e306beb Binary files /dev/null and b/lib2/libs/Prg0SoaProgramInfraStrong_14000.2.0.jar differ diff --git a/lib2/libs/Prg0SoaStrongModelProgramInfra_14000.2.0.jar b/lib2/libs/Prg0SoaStrongModelProgramInfra_14000.2.0.jar new file mode 100644 index 0000000..3ebe970 Binary files /dev/null and b/lib2/libs/Prg0SoaStrongModelProgramInfra_14000.2.0.jar differ diff --git a/lib2/libs/Prg1SoaProgramPlanningAppLoose_14000.2.0.jar b/lib2/libs/Prg1SoaProgramPlanningAppLoose_14000.2.0.jar new file mode 100644 index 0000000..d919c0a Binary files /dev/null and b/lib2/libs/Prg1SoaProgramPlanningAppLoose_14000.2.0.jar differ diff --git a/lib2/libs/Prg1SoaProgramPlanningAppStrong_14000.2.0.jar b/lib2/libs/Prg1SoaProgramPlanningAppStrong_14000.2.0.jar new file mode 100644 index 0000000..09b714d Binary files /dev/null and b/lib2/libs/Prg1SoaProgramPlanningAppStrong_14000.2.0.jar differ diff --git a/lib2/libs/Prg1SoaStrongModelProgramPlanningApp_14000.2.0.jar b/lib2/libs/Prg1SoaStrongModelProgramPlanningApp_14000.2.0.jar new file mode 100644 index 0000000..6cfef90 Binary files /dev/null and b/lib2/libs/Prg1SoaStrongModelProgramPlanningApp_14000.2.0.jar differ diff --git a/lib2/libs/Ptn0SoaPartitionLoose_14000.2.0.jar b/lib2/libs/Ptn0SoaPartitionLoose_14000.2.0.jar new file mode 100644 index 0000000..f9d948d Binary files /dev/null and b/lib2/libs/Ptn0SoaPartitionLoose_14000.2.0.jar differ diff --git a/lib2/libs/Ptn0SoaPartitionRac_14000.2.0.jar b/lib2/libs/Ptn0SoaPartitionRac_14000.2.0.jar new file mode 100644 index 0000000..1f3e901 Binary files /dev/null and b/lib2/libs/Ptn0SoaPartitionRac_14000.2.0.jar differ diff --git a/lib2/libs/Ptn0SoaPartitionStrong_14000.2.0.jar b/lib2/libs/Ptn0SoaPartitionStrong_14000.2.0.jar new file mode 100644 index 0000000..9c92477 Binary files /dev/null and b/lib2/libs/Ptn0SoaPartitionStrong_14000.2.0.jar differ diff --git a/lib2/libs/Qc0SoaStrongModelQualityCenterBase_14000.2.0.jar b/lib2/libs/Qc0SoaStrongModelQualityCenterBase_14000.2.0.jar new file mode 100644 index 0000000..76273d9 Binary files /dev/null and b/lib2/libs/Qc0SoaStrongModelQualityCenterBase_14000.2.0.jar differ diff --git a/lib2/libs/Rlz0SoaRealizationLoose_14000.2.0.jar b/lib2/libs/Rlz0SoaRealizationLoose_14000.2.0.jar new file mode 100644 index 0000000..70ec2ef Binary files /dev/null and b/lib2/libs/Rlz0SoaRealizationLoose_14000.2.0.jar differ diff --git a/lib2/libs/Rlz0SoaRealizationRac_14000.2.0.jar b/lib2/libs/Rlz0SoaRealizationRac_14000.2.0.jar new file mode 100644 index 0000000..6f39154 Binary files /dev/null and b/lib2/libs/Rlz0SoaRealizationRac_14000.2.0.jar differ diff --git a/lib2/libs/Rlz0SoaRealizationStrong_14000.2.0.jar b/lib2/libs/Rlz0SoaRealizationStrong_14000.2.0.jar new file mode 100644 index 0000000..e72066a Binary files /dev/null and b/lib2/libs/Rlz0SoaRealizationStrong_14000.2.0.jar differ diff --git a/lib2/libs/Rse0SoaStrongModelTcRsEnablement_14000.2.0.jar b/lib2/libs/Rse0SoaStrongModelTcRsEnablement_14000.2.0.jar new file mode 100644 index 0000000..196b04c Binary files /dev/null and b/lib2/libs/Rse0SoaStrongModelTcRsEnablement_14000.2.0.jar differ diff --git a/lib2/libs/SAS0SoaSvcAutoSchedulingLoose_14000.2.0.jar b/lib2/libs/SAS0SoaSvcAutoSchedulingLoose_14000.2.0.jar new file mode 100644 index 0000000..76c666e Binary files /dev/null and b/lib2/libs/SAS0SoaSvcAutoSchedulingLoose_14000.2.0.jar differ diff --git a/lib2/libs/SAS0SoaSvcAutoSchedulingRac_14000.2.0.jar b/lib2/libs/SAS0SoaSvcAutoSchedulingRac_14000.2.0.jar new file mode 100644 index 0000000..0e1dff1 Binary files /dev/null and b/lib2/libs/SAS0SoaSvcAutoSchedulingRac_14000.2.0.jar differ diff --git a/lib2/libs/SAS0SoaSvcAutoSchedulingStrong_14000.2.0.jar b/lib2/libs/SAS0SoaSvcAutoSchedulingStrong_14000.2.0.jar new file mode 100644 index 0000000..653b046 Binary files /dev/null and b/lib2/libs/SAS0SoaSvcAutoSchedulingStrong_14000.2.0.jar differ diff --git a/lib2/libs/SSF0SoaServiceForecastingLoose_14000.2.0.jar b/lib2/libs/SSF0SoaServiceForecastingLoose_14000.2.0.jar new file mode 100644 index 0000000..0327d9a Binary files /dev/null and b/lib2/libs/SSF0SoaServiceForecastingLoose_14000.2.0.jar differ diff --git a/lib2/libs/SSF0SoaServiceForecastingRac_14000.2.0.jar b/lib2/libs/SSF0SoaServiceForecastingRac_14000.2.0.jar new file mode 100644 index 0000000..c387613 Binary files /dev/null and b/lib2/libs/SSF0SoaServiceForecastingRac_14000.2.0.jar differ diff --git a/lib2/libs/SSF0SoaServiceForecastingStrong_14000.2.0.jar b/lib2/libs/SSF0SoaServiceForecastingStrong_14000.2.0.jar new file mode 100644 index 0000000..3963656 Binary files /dev/null and b/lib2/libs/SSF0SoaServiceForecastingStrong_14000.2.0.jar differ diff --git a/lib2/libs/SSF0SoaStrongModelServiceForecasting_14000.2.0.jar b/lib2/libs/SSF0SoaStrongModelServiceForecasting_14000.2.0.jar new file mode 100644 index 0000000..b53606f Binary files /dev/null and b/lib2/libs/SSF0SoaStrongModelServiceForecasting_14000.2.0.jar differ diff --git a/lib2/libs/SSP0SoaStrongModelServicePlanning_14000.2.0.jar b/lib2/libs/SSP0SoaStrongModelServicePlanning_14000.2.0.jar new file mode 100644 index 0000000..9cf1645 Binary files /dev/null and b/lib2/libs/SSP0SoaStrongModelServicePlanning_14000.2.0.jar differ diff --git a/lib2/libs/SSS0SoaStrongModelServiceScheduling_14000.2.0.jar b/lib2/libs/SSS0SoaStrongModelServiceScheduling_14000.2.0.jar new file mode 100644 index 0000000..b96aaff Binary files /dev/null and b/lib2/libs/SSS0SoaStrongModelServiceScheduling_14000.2.0.jar differ diff --git a/lib2/libs/SSS0SoaSvcSchedulingLoose_14000.2.0.jar b/lib2/libs/SSS0SoaSvcSchedulingLoose_14000.2.0.jar new file mode 100644 index 0000000..d71ae6c Binary files /dev/null and b/lib2/libs/SSS0SoaSvcSchedulingLoose_14000.2.0.jar differ diff --git a/lib2/libs/SSS0SoaSvcSchedulingRac_14000.2.0.jar b/lib2/libs/SSS0SoaSvcSchedulingRac_14000.2.0.jar new file mode 100644 index 0000000..9742999 Binary files /dev/null and b/lib2/libs/SSS0SoaSvcSchedulingRac_14000.2.0.jar differ diff --git a/lib2/libs/SSS0SoaSvcSchedulingStrong_14000.2.0.jar b/lib2/libs/SSS0SoaSvcSchedulingStrong_14000.2.0.jar new file mode 100644 index 0000000..f0743a5 Binary files /dev/null and b/lib2/libs/SSS0SoaSvcSchedulingStrong_14000.2.0.jar differ diff --git a/lib2/libs/Sdm0SoaStrongModelSampleDocMgt_14000.2.0.jar b/lib2/libs/Sdm0SoaStrongModelSampleDocMgt_14000.2.0.jar new file mode 100644 index 0000000..195f1d4 Binary files /dev/null and b/lib2/libs/Sdm0SoaStrongModelSampleDocMgt_14000.2.0.jar differ diff --git a/lib2/libs/Sfd0SoaSemiconductorFoundationLoose_14000.2.0.jar b/lib2/libs/Sfd0SoaSemiconductorFoundationLoose_14000.2.0.jar new file mode 100644 index 0000000..561b267 Binary files /dev/null and b/lib2/libs/Sfd0SoaSemiconductorFoundationLoose_14000.2.0.jar differ diff --git a/lib2/libs/Sfd0SoaSemiconductorFoundationStrong_14000.2.0.jar b/lib2/libs/Sfd0SoaSemiconductorFoundationStrong_14000.2.0.jar new file mode 100644 index 0000000..63119a1 Binary files /dev/null and b/lib2/libs/Sfd0SoaSemiconductorFoundationStrong_14000.2.0.jar differ diff --git a/lib2/libs/Sfd0SoaStrongModelSemiconductorFoundation_14000.2.0.jar b/lib2/libs/Sfd0SoaStrongModelSemiconductorFoundation_14000.2.0.jar new file mode 100644 index 0000000..becb7f9 Binary files /dev/null and b/lib2/libs/Sfd0SoaStrongModelSemiconductorFoundation_14000.2.0.jar differ diff --git a/lib2/libs/Sis0SoaSocialIntLoose_14000.2.0.jar b/lib2/libs/Sis0SoaSocialIntLoose_14000.2.0.jar new file mode 100644 index 0000000..c5c1989 Binary files /dev/null and b/lib2/libs/Sis0SoaSocialIntLoose_14000.2.0.jar differ diff --git a/lib2/libs/Sis0SoaSocialIntRac_14000.2.0.jar b/lib2/libs/Sis0SoaSocialIntRac_14000.2.0.jar new file mode 100644 index 0000000..cadb1cc Binary files /dev/null and b/lib2/libs/Sis0SoaSocialIntRac_14000.2.0.jar differ diff --git a/lib2/libs/Sis0SoaSocialIntStrong_14000.2.0.jar b/lib2/libs/Sis0SoaSocialIntStrong_14000.2.0.jar new file mode 100644 index 0000000..eb47c4e Binary files /dev/null and b/lib2/libs/Sis0SoaSocialIntStrong_14000.2.0.jar differ diff --git a/lib2/libs/Smc0SoaStrongModelPsMcfgSupport_14000.2.0.jar b/lib2/libs/Smc0SoaStrongModelPsMcfgSupport_14000.2.0.jar new file mode 100644 index 0000000..b0b5b48 Binary files /dev/null and b/lib2/libs/Smc0SoaStrongModelPsMcfgSupport_14000.2.0.jar differ diff --git a/lib2/libs/Smc0SoaStructureManagementLoose_14000.2.0.jar b/lib2/libs/Smc0SoaStructureManagementLoose_14000.2.0.jar new file mode 100644 index 0000000..37151ff Binary files /dev/null and b/lib2/libs/Smc0SoaStructureManagementLoose_14000.2.0.jar differ diff --git a/lib2/libs/Smc0SoaStructureManagementRac_14000.2.0.jar b/lib2/libs/Smc0SoaStructureManagementRac_14000.2.0.jar new file mode 100644 index 0000000..a5082fe Binary files /dev/null and b/lib2/libs/Smc0SoaStructureManagementRac_14000.2.0.jar differ diff --git a/lib2/libs/Smc0SoaStructureManagementStrong_14000.2.0.jar b/lib2/libs/Smc0SoaStructureManagementStrong_14000.2.0.jar new file mode 100644 index 0000000..d68be5f Binary files /dev/null and b/lib2/libs/Smc0SoaStructureManagementStrong_14000.2.0.jar differ diff --git a/lib2/libs/Srh0SoaStrongModelApsConfiguredSearch_14000.2.0.jar b/lib2/libs/Srh0SoaStrongModelApsConfiguredSearch_14000.2.0.jar new file mode 100644 index 0000000..58f5e42 Binary files /dev/null and b/lib2/libs/Srh0SoaStrongModelApsConfiguredSearch_14000.2.0.jar differ diff --git a/lib2/libs/Ssm0SoaStrongModelSystemSynthesisModeling_14000.2.0.jar b/lib2/libs/Ssm0SoaStrongModelSystemSynthesisModeling_14000.2.0.jar new file mode 100644 index 0000000..8aed8d0 Binary files /dev/null and b/lib2/libs/Ssm0SoaStrongModelSystemSynthesisModeling_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaAdministrationLoose_14000.2.0.jar b/lib2/libs/TcSoaAdministrationLoose_14000.2.0.jar new file mode 100644 index 0000000..1f88f3c Binary files /dev/null and b/lib2/libs/TcSoaAdministrationLoose_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaAdministrationRac_14000.2.0.jar b/lib2/libs/TcSoaAdministrationRac_14000.2.0.jar new file mode 100644 index 0000000..79402af Binary files /dev/null and b/lib2/libs/TcSoaAdministrationRac_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaAdministrationStrong_14000.2.0.jar b/lib2/libs/TcSoaAdministrationStrong_14000.2.0.jar new file mode 100644 index 0000000..644dd63 Binary files /dev/null and b/lib2/libs/TcSoaAdministrationStrong_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaAiLoose_14000.2.0.jar b/lib2/libs/TcSoaAiLoose_14000.2.0.jar new file mode 100644 index 0000000..41e3db3 Binary files /dev/null and b/lib2/libs/TcSoaAiLoose_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaAiRac_14000.2.0.jar b/lib2/libs/TcSoaAiRac_14000.2.0.jar new file mode 100644 index 0000000..cfc7cbd Binary files /dev/null and b/lib2/libs/TcSoaAiRac_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaAiStrong_14000.2.0.jar b/lib2/libs/TcSoaAiStrong_14000.2.0.jar new file mode 100644 index 0000000..d2a2c19 Binary files /dev/null and b/lib2/libs/TcSoaAiStrong_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaAllocationsLoose_14000.2.0.jar b/lib2/libs/TcSoaAllocationsLoose_14000.2.0.jar new file mode 100644 index 0000000..17baf80 Binary files /dev/null and b/lib2/libs/TcSoaAllocationsLoose_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaAllocationsRac_14000.2.0.jar b/lib2/libs/TcSoaAllocationsRac_14000.2.0.jar new file mode 100644 index 0000000..64fd714 Binary files /dev/null and b/lib2/libs/TcSoaAllocationsRac_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaAllocationsStrong_14000.2.0.jar b/lib2/libs/TcSoaAllocationsStrong_14000.2.0.jar new file mode 100644 index 0000000..1de637f Binary files /dev/null and b/lib2/libs/TcSoaAllocationsStrong_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaAsBuiltLoose_14000.2.0.jar b/lib2/libs/TcSoaAsBuiltLoose_14000.2.0.jar new file mode 100644 index 0000000..b33f74f Binary files /dev/null and b/lib2/libs/TcSoaAsBuiltLoose_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaAsBuiltRac_14000.2.0.jar b/lib2/libs/TcSoaAsBuiltRac_14000.2.0.jar new file mode 100644 index 0000000..18d5725 Binary files /dev/null and b/lib2/libs/TcSoaAsBuiltRac_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaAsBuiltStrong_14000.2.0.jar b/lib2/libs/TcSoaAsBuiltStrong_14000.2.0.jar new file mode 100644 index 0000000..390db6b Binary files /dev/null and b/lib2/libs/TcSoaAsBuiltStrong_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaAsMaintainedLoose_14000.2.0.jar b/lib2/libs/TcSoaAsMaintainedLoose_14000.2.0.jar new file mode 100644 index 0000000..97bdaa3 Binary files /dev/null and b/lib2/libs/TcSoaAsMaintainedLoose_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaAsMaintainedRac_14000.2.0.jar b/lib2/libs/TcSoaAsMaintainedRac_14000.2.0.jar new file mode 100644 index 0000000..4ff8af3 Binary files /dev/null and b/lib2/libs/TcSoaAsMaintainedRac_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaAsMaintainedStrong_14000.2.0.jar b/lib2/libs/TcSoaAsMaintainedStrong_14000.2.0.jar new file mode 100644 index 0000000..a12474f Binary files /dev/null and b/lib2/libs/TcSoaAsMaintainedStrong_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaAsbAsmAlignmentLoose_14000.2.0.jar b/lib2/libs/TcSoaAsbAsmAlignmentLoose_14000.2.0.jar new file mode 100644 index 0000000..2e2f2b2 Binary files /dev/null and b/lib2/libs/TcSoaAsbAsmAlignmentLoose_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaAsbAsmAlignmentRac_14000.2.0.jar b/lib2/libs/TcSoaAsbAsmAlignmentRac_14000.2.0.jar new file mode 100644 index 0000000..5bc3f6f Binary files /dev/null and b/lib2/libs/TcSoaAsbAsmAlignmentRac_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaAsbAsmAlignmentStrong_14000.2.0.jar b/lib2/libs/TcSoaAsbAsmAlignmentStrong_14000.2.0.jar new file mode 100644 index 0000000..fdb2d7c Binary files /dev/null and b/lib2/libs/TcSoaAsbAsmAlignmentStrong_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaAuthorizedDataAccessLoose_14000.2.0.jar b/lib2/libs/TcSoaAuthorizedDataAccessLoose_14000.2.0.jar new file mode 100644 index 0000000..7ac994c Binary files /dev/null and b/lib2/libs/TcSoaAuthorizedDataAccessLoose_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaAuthorizedDataAccessRac_14000.2.0.jar b/lib2/libs/TcSoaAuthorizedDataAccessRac_14000.2.0.jar new file mode 100644 index 0000000..a19c6f7 Binary files /dev/null and b/lib2/libs/TcSoaAuthorizedDataAccessRac_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaAuthorizedDataAccessStrong_14000.2.0.jar b/lib2/libs/TcSoaAuthorizedDataAccessStrong_14000.2.0.jar new file mode 100644 index 0000000..a5ae646 Binary files /dev/null and b/lib2/libs/TcSoaAuthorizedDataAccessStrong_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaBomLoose_14000.2.0.jar b/lib2/libs/TcSoaBomLoose_14000.2.0.jar new file mode 100644 index 0000000..9bb8fd8 Binary files /dev/null and b/lib2/libs/TcSoaBomLoose_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaBomRac_14000.2.0.jar b/lib2/libs/TcSoaBomRac_14000.2.0.jar new file mode 100644 index 0000000..98cf031 Binary files /dev/null and b/lib2/libs/TcSoaBomRac_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaBomStrong_14000.2.0.jar b/lib2/libs/TcSoaBomStrong_14000.2.0.jar new file mode 100644 index 0000000..6675a92 Binary files /dev/null and b/lib2/libs/TcSoaBomStrong_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaBusinessModelerLoose_14000.2.0.jar b/lib2/libs/TcSoaBusinessModelerLoose_14000.2.0.jar new file mode 100644 index 0000000..9e24b3d Binary files /dev/null and b/lib2/libs/TcSoaBusinessModelerLoose_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaBusinessModelerRac_14000.2.0.jar b/lib2/libs/TcSoaBusinessModelerRac_14000.2.0.jar new file mode 100644 index 0000000..1c6ef6d Binary files /dev/null and b/lib2/libs/TcSoaBusinessModelerRac_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaBusinessModelerStrong_14000.2.0.jar b/lib2/libs/TcSoaBusinessModelerStrong_14000.2.0.jar new file mode 100644 index 0000000..09dc459 Binary files /dev/null and b/lib2/libs/TcSoaBusinessModelerStrong_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaCadBomAlignmentLoose_14000.2.0.jar b/lib2/libs/TcSoaCadBomAlignmentLoose_14000.2.0.jar new file mode 100644 index 0000000..f6e2ead Binary files /dev/null and b/lib2/libs/TcSoaCadBomAlignmentLoose_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaCadBomAlignmentRac_14000.2.0.jar b/lib2/libs/TcSoaCadBomAlignmentRac_14000.2.0.jar new file mode 100644 index 0000000..21e7b90 Binary files /dev/null and b/lib2/libs/TcSoaCadBomAlignmentRac_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaCadBomAlignmentStrong_14000.2.0.jar b/lib2/libs/TcSoaCadBomAlignmentStrong_14000.2.0.jar new file mode 100644 index 0000000..e0bc238 Binary files /dev/null and b/lib2/libs/TcSoaCadBomAlignmentStrong_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaCadLoose_14000.2.0.jar b/lib2/libs/TcSoaCadLoose_14000.2.0.jar new file mode 100644 index 0000000..6d30c3f Binary files /dev/null and b/lib2/libs/TcSoaCadLoose_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaCadRac_14000.2.0.jar b/lib2/libs/TcSoaCadRac_14000.2.0.jar new file mode 100644 index 0000000..a9ec218 Binary files /dev/null and b/lib2/libs/TcSoaCadRac_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaCadStrong_14000.2.0.jar b/lib2/libs/TcSoaCadStrong_14000.2.0.jar new file mode 100644 index 0000000..e5d01ec Binary files /dev/null and b/lib2/libs/TcSoaCadStrong_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaCaeLoose_14000.2.0.jar b/lib2/libs/TcSoaCaeLoose_14000.2.0.jar new file mode 100644 index 0000000..2328b98 Binary files /dev/null and b/lib2/libs/TcSoaCaeLoose_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaCaeRac_14000.2.0.jar b/lib2/libs/TcSoaCaeRac_14000.2.0.jar new file mode 100644 index 0000000..4559b63 Binary files /dev/null and b/lib2/libs/TcSoaCaeRac_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaCaeStrong_14000.2.0.jar b/lib2/libs/TcSoaCaeStrong_14000.2.0.jar new file mode 100644 index 0000000..3534ae6 Binary files /dev/null and b/lib2/libs/TcSoaCaeStrong_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaCalendarManagementLoose_14000.2.0.jar b/lib2/libs/TcSoaCalendarManagementLoose_14000.2.0.jar new file mode 100644 index 0000000..779b323 Binary files /dev/null and b/lib2/libs/TcSoaCalendarManagementLoose_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaCalendarManagementRac_14000.2.0.jar b/lib2/libs/TcSoaCalendarManagementRac_14000.2.0.jar new file mode 100644 index 0000000..a03c524 Binary files /dev/null and b/lib2/libs/TcSoaCalendarManagementRac_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaCalendarManagementStrong_14000.2.0.jar b/lib2/libs/TcSoaCalendarManagementStrong_14000.2.0.jar new file mode 100644 index 0000000..e3dd832 Binary files /dev/null and b/lib2/libs/TcSoaCalendarManagementStrong_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaChangeManagementLoose_14000.2.0.jar b/lib2/libs/TcSoaChangeManagementLoose_14000.2.0.jar new file mode 100644 index 0000000..535eda4 Binary files /dev/null and b/lib2/libs/TcSoaChangeManagementLoose_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaChangeManagementRac_14000.2.0.jar b/lib2/libs/TcSoaChangeManagementRac_14000.2.0.jar new file mode 100644 index 0000000..4c2f710 Binary files /dev/null and b/lib2/libs/TcSoaChangeManagementRac_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaChangeManagementStrong_14000.2.0.jar b/lib2/libs/TcSoaChangeManagementStrong_14000.2.0.jar new file mode 100644 index 0000000..8121ca6 Binary files /dev/null and b/lib2/libs/TcSoaChangeManagementStrong_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaClassificationLoose_14000.2.0.jar b/lib2/libs/TcSoaClassificationLoose_14000.2.0.jar new file mode 100644 index 0000000..203db1c Binary files /dev/null and b/lib2/libs/TcSoaClassificationLoose_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaClassificationRac_14000.2.0.jar b/lib2/libs/TcSoaClassificationRac_14000.2.0.jar new file mode 100644 index 0000000..79a5736 Binary files /dev/null and b/lib2/libs/TcSoaClassificationRac_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaClassificationStrong_14000.2.0.jar b/lib2/libs/TcSoaClassificationStrong_14000.2.0.jar new file mode 100644 index 0000000..6e495cd Binary files /dev/null and b/lib2/libs/TcSoaClassificationStrong_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaClient_14000.2.0.jar b/lib2/libs/TcSoaClient_14000.2.0.jar new file mode 100644 index 0000000..9ae8ca0 Binary files /dev/null and b/lib2/libs/TcSoaClient_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaCommon_14000.2.0.jar b/lib2/libs/TcSoaCommon_14000.2.0.jar new file mode 100644 index 0000000..1dcfe93 Binary files /dev/null and b/lib2/libs/TcSoaCommon_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaContMgmtBaseLoose_14000.2.0.jar b/lib2/libs/TcSoaContMgmtBaseLoose_14000.2.0.jar new file mode 100644 index 0000000..e1c694a Binary files /dev/null and b/lib2/libs/TcSoaContMgmtBaseLoose_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaContMgmtBaseRac_14000.2.0.jar b/lib2/libs/TcSoaContMgmtBaseRac_14000.2.0.jar new file mode 100644 index 0000000..759f7bd Binary files /dev/null and b/lib2/libs/TcSoaContMgmtBaseRac_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaContMgmtBaseStrong_14000.2.0.jar b/lib2/libs/TcSoaContMgmtBaseStrong_14000.2.0.jar new file mode 100644 index 0000000..d9578c8 Binary files /dev/null and b/lib2/libs/TcSoaContMgmtBaseStrong_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaCoreLoose_14000.2.0.jar b/lib2/libs/TcSoaCoreLoose_14000.2.0.jar new file mode 100644 index 0000000..009d7de Binary files /dev/null and b/lib2/libs/TcSoaCoreLoose_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaCoreRac_14000.2.0.jar b/lib2/libs/TcSoaCoreRac_14000.2.0.jar new file mode 100644 index 0000000..933c832 Binary files /dev/null and b/lib2/libs/TcSoaCoreRac_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaCoreStrong_14000.2.0.jar b/lib2/libs/TcSoaCoreStrong_14000.2.0.jar new file mode 100644 index 0000000..e48d005 Binary files /dev/null and b/lib2/libs/TcSoaCoreStrong_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaDocumentManagementLoose_14000.2.0.jar b/lib2/libs/TcSoaDocumentManagementLoose_14000.2.0.jar new file mode 100644 index 0000000..a886be9 Binary files /dev/null and b/lib2/libs/TcSoaDocumentManagementLoose_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaDocumentManagementRac_14000.2.0.jar b/lib2/libs/TcSoaDocumentManagementRac_14000.2.0.jar new file mode 100644 index 0000000..a991b72 Binary files /dev/null and b/lib2/libs/TcSoaDocumentManagementRac_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaDocumentManagementStrong_14000.2.0.jar b/lib2/libs/TcSoaDocumentManagementStrong_14000.2.0.jar new file mode 100644 index 0000000..7fa8e2f Binary files /dev/null and b/lib2/libs/TcSoaDocumentManagementStrong_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaGlobalMultiSiteLoose_14000.2.0.jar b/lib2/libs/TcSoaGlobalMultiSiteLoose_14000.2.0.jar new file mode 100644 index 0000000..c161d60 Binary files /dev/null and b/lib2/libs/TcSoaGlobalMultiSiteLoose_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaGlobalMultiSiteRac_14000.2.0.jar b/lib2/libs/TcSoaGlobalMultiSiteRac_14000.2.0.jar new file mode 100644 index 0000000..09639a2 Binary files /dev/null and b/lib2/libs/TcSoaGlobalMultiSiteRac_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaGlobalMultiSiteStrong_14000.2.0.jar b/lib2/libs/TcSoaGlobalMultiSiteStrong_14000.2.0.jar new file mode 100644 index 0000000..192613b Binary files /dev/null and b/lib2/libs/TcSoaGlobalMultiSiteStrong_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaImportExportLoose_14000.2.0.jar b/lib2/libs/TcSoaImportExportLoose_14000.2.0.jar new file mode 100644 index 0000000..25c3698 Binary files /dev/null and b/lib2/libs/TcSoaImportExportLoose_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaImportExportRac_14000.2.0.jar b/lib2/libs/TcSoaImportExportRac_14000.2.0.jar new file mode 100644 index 0000000..d7261e9 Binary files /dev/null and b/lib2/libs/TcSoaImportExportRac_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaImportExportStrong_14000.2.0.jar b/lib2/libs/TcSoaImportExportStrong_14000.2.0.jar new file mode 100644 index 0000000..74d40fe Binary files /dev/null and b/lib2/libs/TcSoaImportExportStrong_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaIssueManagementLoose_14000.2.0.jar b/lib2/libs/TcSoaIssueManagementLoose_14000.2.0.jar new file mode 100644 index 0000000..5fa81be Binary files /dev/null and b/lib2/libs/TcSoaIssueManagementLoose_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaIssueManagementRac_14000.2.0.jar b/lib2/libs/TcSoaIssueManagementRac_14000.2.0.jar new file mode 100644 index 0000000..6750abd Binary files /dev/null and b/lib2/libs/TcSoaIssueManagementRac_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaIssueManagementStrong_14000.2.0.jar b/lib2/libs/TcSoaIssueManagementStrong_14000.2.0.jar new file mode 100644 index 0000000..b48a2c2 Binary files /dev/null and b/lib2/libs/TcSoaIssueManagementStrong_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaMESLoose_14000.2.0.jar b/lib2/libs/TcSoaMESLoose_14000.2.0.jar new file mode 100644 index 0000000..0d66de8 Binary files /dev/null and b/lib2/libs/TcSoaMESLoose_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaMESRac_14000.2.0.jar b/lib2/libs/TcSoaMESRac_14000.2.0.jar new file mode 100644 index 0000000..bbcc3c4 Binary files /dev/null and b/lib2/libs/TcSoaMESRac_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaMESStrong_14000.2.0.jar b/lib2/libs/TcSoaMESStrong_14000.2.0.jar new file mode 100644 index 0000000..93d622b Binary files /dev/null and b/lib2/libs/TcSoaMESStrong_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaMROCoreLoose_14000.2.0.jar b/lib2/libs/TcSoaMROCoreLoose_14000.2.0.jar new file mode 100644 index 0000000..cc9af34 Binary files /dev/null and b/lib2/libs/TcSoaMROCoreLoose_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaMROCoreRac_14000.2.0.jar b/lib2/libs/TcSoaMROCoreRac_14000.2.0.jar new file mode 100644 index 0000000..1c3663b Binary files /dev/null and b/lib2/libs/TcSoaMROCoreRac_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaMROCoreStrong_14000.2.0.jar b/lib2/libs/TcSoaMROCoreStrong_14000.2.0.jar new file mode 100644 index 0000000..8b7e3bd Binary files /dev/null and b/lib2/libs/TcSoaMROCoreStrong_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaManufacturingLoose_14000.2.0.jar b/lib2/libs/TcSoaManufacturingLoose_14000.2.0.jar new file mode 100644 index 0000000..e01a284 Binary files /dev/null and b/lib2/libs/TcSoaManufacturingLoose_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaManufacturingRac_14000.2.0.jar b/lib2/libs/TcSoaManufacturingRac_14000.2.0.jar new file mode 100644 index 0000000..a19803f Binary files /dev/null and b/lib2/libs/TcSoaManufacturingRac_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaManufacturingStrong_14000.2.0.jar b/lib2/libs/TcSoaManufacturingStrong_14000.2.0.jar new file mode 100644 index 0000000..99ea375 Binary files /dev/null and b/lib2/libs/TcSoaManufacturingStrong_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaMultisiteLoose_14000.2.0.jar b/lib2/libs/TcSoaMultisiteLoose_14000.2.0.jar new file mode 100644 index 0000000..f607ec1 Binary files /dev/null and b/lib2/libs/TcSoaMultisiteLoose_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaMultisiteRac_14000.2.0.jar b/lib2/libs/TcSoaMultisiteRac_14000.2.0.jar new file mode 100644 index 0000000..6b4fdc1 Binary files /dev/null and b/lib2/libs/TcSoaMultisiteRac_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaMultisiteStrong_14000.2.0.jar b/lib2/libs/TcSoaMultisiteStrong_14000.2.0.jar new file mode 100644 index 0000000..9d3505a Binary files /dev/null and b/lib2/libs/TcSoaMultisiteStrong_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaParameterManagementLoose_14000.2.0.jar b/lib2/libs/TcSoaParameterManagementLoose_14000.2.0.jar new file mode 100644 index 0000000..f82b9ce Binary files /dev/null and b/lib2/libs/TcSoaParameterManagementLoose_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaParameterManagementRac_14000.2.0.jar b/lib2/libs/TcSoaParameterManagementRac_14000.2.0.jar new file mode 100644 index 0000000..38f4a86 Binary files /dev/null and b/lib2/libs/TcSoaParameterManagementRac_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaParameterManagementStrong_14000.2.0.jar b/lib2/libs/TcSoaParameterManagementStrong_14000.2.0.jar new file mode 100644 index 0000000..d547693 Binary files /dev/null and b/lib2/libs/TcSoaParameterManagementStrong_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaProductionManagementLoose_14000.2.0.jar b/lib2/libs/TcSoaProductionManagementLoose_14000.2.0.jar new file mode 100644 index 0000000..eb53020 Binary files /dev/null and b/lib2/libs/TcSoaProductionManagementLoose_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaProductionManagementRac_14000.2.0.jar b/lib2/libs/TcSoaProductionManagementRac_14000.2.0.jar new file mode 100644 index 0000000..8b3d534 Binary files /dev/null and b/lib2/libs/TcSoaProductionManagementRac_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaProductionManagementStrong_14000.2.0.jar b/lib2/libs/TcSoaProductionManagementStrong_14000.2.0.jar new file mode 100644 index 0000000..eb15a43 Binary files /dev/null and b/lib2/libs/TcSoaProductionManagementStrong_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaProjectManagementLoose_14000.2.0.jar b/lib2/libs/TcSoaProjectManagementLoose_14000.2.0.jar new file mode 100644 index 0000000..0448e8c Binary files /dev/null and b/lib2/libs/TcSoaProjectManagementLoose_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaProjectManagementRac_14000.2.0.jar b/lib2/libs/TcSoaProjectManagementRac_14000.2.0.jar new file mode 100644 index 0000000..e6d3ff7 Binary files /dev/null and b/lib2/libs/TcSoaProjectManagementRac_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaProjectManagementStrong_14000.2.0.jar b/lib2/libs/TcSoaProjectManagementStrong_14000.2.0.jar new file mode 100644 index 0000000..be997fa Binary files /dev/null and b/lib2/libs/TcSoaProjectManagementStrong_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaQueryLoose_14000.2.0.jar b/lib2/libs/TcSoaQueryLoose_14000.2.0.jar new file mode 100644 index 0000000..9b1b0e2 Binary files /dev/null and b/lib2/libs/TcSoaQueryLoose_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaQueryRac_14000.2.0.jar b/lib2/libs/TcSoaQueryRac_14000.2.0.jar new file mode 100644 index 0000000..699537b Binary files /dev/null and b/lib2/libs/TcSoaQueryRac_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaQueryStrong_14000.2.0.jar b/lib2/libs/TcSoaQueryStrong_14000.2.0.jar new file mode 100644 index 0000000..5a74b1c Binary files /dev/null and b/lib2/libs/TcSoaQueryStrong_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaRdvLoose_14000.2.0.jar b/lib2/libs/TcSoaRdvLoose_14000.2.0.jar new file mode 100644 index 0000000..56f67ac Binary files /dev/null and b/lib2/libs/TcSoaRdvLoose_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaRdvRac_14000.2.0.jar b/lib2/libs/TcSoaRdvRac_14000.2.0.jar new file mode 100644 index 0000000..3b4bad0 Binary files /dev/null and b/lib2/libs/TcSoaRdvRac_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaRdvStrong_14000.2.0.jar b/lib2/libs/TcSoaRdvStrong_14000.2.0.jar new file mode 100644 index 0000000..d6c9483 Binary files /dev/null and b/lib2/libs/TcSoaRdvStrong_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaReportsLoose_14000.2.0.jar b/lib2/libs/TcSoaReportsLoose_14000.2.0.jar new file mode 100644 index 0000000..2454ace Binary files /dev/null and b/lib2/libs/TcSoaReportsLoose_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaReportsRac_14000.2.0.jar b/lib2/libs/TcSoaReportsRac_14000.2.0.jar new file mode 100644 index 0000000..1f9d287 Binary files /dev/null and b/lib2/libs/TcSoaReportsRac_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaReportsStrong_14000.2.0.jar b/lib2/libs/TcSoaReportsStrong_14000.2.0.jar new file mode 100644 index 0000000..5f4c1e9 Binary files /dev/null and b/lib2/libs/TcSoaReportsStrong_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaRequirementsManagementLoose_14000.2.0.jar b/lib2/libs/TcSoaRequirementsManagementLoose_14000.2.0.jar new file mode 100644 index 0000000..1c1c461 Binary files /dev/null and b/lib2/libs/TcSoaRequirementsManagementLoose_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaRequirementsManagementRac_14000.2.0.jar b/lib2/libs/TcSoaRequirementsManagementRac_14000.2.0.jar new file mode 100644 index 0000000..2d24311 Binary files /dev/null and b/lib2/libs/TcSoaRequirementsManagementRac_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaRequirementsManagementStrong_14000.2.0.jar b/lib2/libs/TcSoaRequirementsManagementStrong_14000.2.0.jar new file mode 100644 index 0000000..44c4bf7 Binary files /dev/null and b/lib2/libs/TcSoaRequirementsManagementStrong_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaSrmIntegrationLoose_14000.2.0.jar b/lib2/libs/TcSoaSrmIntegrationLoose_14000.2.0.jar new file mode 100644 index 0000000..69ef812 Binary files /dev/null and b/lib2/libs/TcSoaSrmIntegrationLoose_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaSrmIntegrationRac_14000.2.0.jar b/lib2/libs/TcSoaSrmIntegrationRac_14000.2.0.jar new file mode 100644 index 0000000..3656bc8 Binary files /dev/null and b/lib2/libs/TcSoaSrmIntegrationRac_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaSrmIntegrationStrong_14000.2.0.jar b/lib2/libs/TcSoaSrmIntegrationStrong_14000.2.0.jar new file mode 100644 index 0000000..367123b Binary files /dev/null and b/lib2/libs/TcSoaSrmIntegrationStrong_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelAdsChangeManagement_14000.2.0.jar b/lib2/libs/TcSoaStrongModelAdsChangeManagement_14000.2.0.jar new file mode 100644 index 0000000..bb34db4 Binary files /dev/null and b/lib2/libs/TcSoaStrongModelAdsChangeManagement_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelAdsFoundation_14000.2.0.jar b/lib2/libs/TcSoaStrongModelAdsFoundation_14000.2.0.jar new file mode 100644 index 0000000..5ff8653 Binary files /dev/null and b/lib2/libs/TcSoaStrongModelAdsFoundation_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelAsBuilt_14000.2.0.jar b/lib2/libs/TcSoaStrongModelAsBuilt_14000.2.0.jar new file mode 100644 index 0000000..255572b Binary files /dev/null and b/lib2/libs/TcSoaStrongModelAsBuilt_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelAsMaintained_14000.2.0.jar b/lib2/libs/TcSoaStrongModelAsMaintained_14000.2.0.jar new file mode 100644 index 0000000..b6d8a9e Binary files /dev/null and b/lib2/libs/TcSoaStrongModelAsMaintained_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelBrndMgmt_14000.2.0.jar b/lib2/libs/TcSoaStrongModelBrndMgmt_14000.2.0.jar new file mode 100644 index 0000000..d464828 Binary files /dev/null and b/lib2/libs/TcSoaStrongModelBrndMgmt_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelCba_14000.2.0.jar b/lib2/libs/TcSoaStrongModelCba_14000.2.0.jar new file mode 100644 index 0000000..0812794 Binary files /dev/null and b/lib2/libs/TcSoaStrongModelCba_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelCcdm_14000.2.0.jar b/lib2/libs/TcSoaStrongModelCcdm_14000.2.0.jar new file mode 100644 index 0000000..a0042ff Binary files /dev/null and b/lib2/libs/TcSoaStrongModelCcdm_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelCdm0ContractManagement_14000.2.0.jar b/lib2/libs/TcSoaStrongModelCdm0ContractManagement_14000.2.0.jar new file mode 100644 index 0000000..84c58b0 Binary files /dev/null and b/lib2/libs/TcSoaStrongModelCdm0ContractManagement_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelClassificationCore_14000.2.0.jar b/lib2/libs/TcSoaStrongModelClassificationCore_14000.2.0.jar new file mode 100644 index 0000000..b92c31c Binary files /dev/null and b/lib2/libs/TcSoaStrongModelClassificationCore_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelCm_14000.2.0.jar b/lib2/libs/TcSoaStrongModelCm_14000.2.0.jar new file mode 100644 index 0000000..c6bb337 Binary files /dev/null and b/lib2/libs/TcSoaStrongModelCm_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelCmtEbop_14000.2.0.jar b/lib2/libs/TcSoaStrongModelCmtEbop_14000.2.0.jar new file mode 100644 index 0000000..c32d98a Binary files /dev/null and b/lib2/libs/TcSoaStrongModelCmtEbop_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelCmtEmserver_14000.2.0.jar b/lib2/libs/TcSoaStrongModelCmtEmserver_14000.2.0.jar new file mode 100644 index 0000000..30231b1 Binary files /dev/null and b/lib2/libs/TcSoaStrongModelCmtEmserver_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelCmtPadTwp_14000.2.0.jar b/lib2/libs/TcSoaStrongModelCmtPadTwp_14000.2.0.jar new file mode 100644 index 0000000..8da4e32 Binary files /dev/null and b/lib2/libs/TcSoaStrongModelCmtPadTwp_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelContmgmtBase_14000.2.0.jar b/lib2/libs/TcSoaStrongModelContmgmtBase_14000.2.0.jar new file mode 100644 index 0000000..cf339e6 Binary files /dev/null and b/lib2/libs/TcSoaStrongModelContmgmtBase_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelContmgmtDita_14000.2.0.jar b/lib2/libs/TcSoaStrongModelContmgmtDita_14000.2.0.jar new file mode 100644 index 0000000..a035ad7 Binary files /dev/null and b/lib2/libs/TcSoaStrongModelContmgmtDita_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelContmgmtS1000d40_14000.2.0.jar b/lib2/libs/TcSoaStrongModelContmgmtS1000d40_14000.2.0.jar new file mode 100644 index 0000000..2c31d06 Binary files /dev/null and b/lib2/libs/TcSoaStrongModelContmgmtS1000d40_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelContmgmtS1000d_14000.2.0.jar b/lib2/libs/TcSoaStrongModelContmgmtS1000d_14000.2.0.jar new file mode 100644 index 0000000..05838ec Binary files /dev/null and b/lib2/libs/TcSoaStrongModelContmgmtS1000d_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelCpdCore_14000.2.0.jar b/lib2/libs/TcSoaStrongModelCpdCore_14000.2.0.jar new file mode 100644 index 0000000..58c2ed8 Binary files /dev/null and b/lib2/libs/TcSoaStrongModelCpdCore_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelCpgMaterials_14000.2.0.jar b/lib2/libs/TcSoaStrongModelCpgMaterials_14000.2.0.jar new file mode 100644 index 0000000..8ce8df0 Binary files /dev/null and b/lib2/libs/TcSoaStrongModelCpgMaterials_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelDiagramming_14000.2.0.jar b/lib2/libs/TcSoaStrongModelDiagramming_14000.2.0.jar new file mode 100644 index 0000000..3a39d50 Binary files /dev/null and b/lib2/libs/TcSoaStrongModelDiagramming_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelDpv_14000.2.0.jar b/lib2/libs/TcSoaStrongModelDpv_14000.2.0.jar new file mode 100644 index 0000000..4cd0578 Binary files /dev/null and b/lib2/libs/TcSoaStrongModelDpv_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelEdaLibrary_14000.2.0.jar b/lib2/libs/TcSoaStrongModelEdaLibrary_14000.2.0.jar new file mode 100644 index 0000000..081441c Binary files /dev/null and b/lib2/libs/TcSoaStrongModelEdaLibrary_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelEdaServer_14000.2.0.jar b/lib2/libs/TcSoaStrongModelEdaServer_14000.2.0.jar new file mode 100644 index 0000000..1fceb91 Binary files /dev/null and b/lib2/libs/TcSoaStrongModelEdaServer_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelEmps_14000.2.0.jar b/lib2/libs/TcSoaStrongModelEmps_14000.2.0.jar new file mode 100644 index 0000000..902cd5c Binary files /dev/null and b/lib2/libs/TcSoaStrongModelEmps_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelEsddm_14000.2.0.jar b/lib2/libs/TcSoaStrongModelEsddm_14000.2.0.jar new file mode 100644 index 0000000..a4545ce Binary files /dev/null and b/lib2/libs/TcSoaStrongModelEsddm_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelEsmBase_14000.2.0.jar b/lib2/libs/TcSoaStrongModelEsmBase_14000.2.0.jar new file mode 100644 index 0000000..960efc8 Binary files /dev/null and b/lib2/libs/TcSoaStrongModelEsmBase_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelEsmProcessor_14000.2.0.jar b/lib2/libs/TcSoaStrongModelEsmProcessor_14000.2.0.jar new file mode 100644 index 0000000..951e992 Binary files /dev/null and b/lib2/libs/TcSoaStrongModelEsmProcessor_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelEsmSoftware_14000.2.0.jar b/lib2/libs/TcSoaStrongModelEsmSoftware_14000.2.0.jar new file mode 100644 index 0000000..af8e0c7 Binary files /dev/null and b/lib2/libs/TcSoaStrongModelEsmSoftware_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelFnshmgmt_14000.2.0.jar b/lib2/libs/TcSoaStrongModelFnshmgmt_14000.2.0.jar new file mode 100644 index 0000000..a0c7538 Binary files /dev/null and b/lib2/libs/TcSoaStrongModelFnshmgmt_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelFpMgmt_14000.2.0.jar b/lib2/libs/TcSoaStrongModelFpMgmt_14000.2.0.jar new file mode 100644 index 0000000..425821a Binary files /dev/null and b/lib2/libs/TcSoaStrongModelFpMgmt_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelGmo_14000.2.0.jar b/lib2/libs/TcSoaStrongModelGmo_14000.2.0.jar new file mode 100644 index 0000000..2f0e43f Binary files /dev/null and b/lib2/libs/TcSoaStrongModelGmo_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelHrn_14000.2.0.jar b/lib2/libs/TcSoaStrongModelHrn_14000.2.0.jar new file mode 100644 index 0000000..0cb951f Binary files /dev/null and b/lib2/libs/TcSoaStrongModelHrn_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelIssuemgmt_14000.2.0.jar b/lib2/libs/TcSoaStrongModelIssuemgmt_14000.2.0.jar new file mode 100644 index 0000000..f0f9850 Binary files /dev/null and b/lib2/libs/TcSoaStrongModelIssuemgmt_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelLibraryManagement_14000.2.0.jar b/lib2/libs/TcSoaStrongModelLibraryManagement_14000.2.0.jar new file mode 100644 index 0000000..2897a3a Binary files /dev/null and b/lib2/libs/TcSoaStrongModelLibraryManagement_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelMDConnectivity_14000.2.0.jar b/lib2/libs/TcSoaStrongModelMDConnectivity_14000.2.0.jar new file mode 100644 index 0000000..4a5a609 Binary files /dev/null and b/lib2/libs/TcSoaStrongModelMDConnectivity_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelMES_14000.2.0.jar b/lib2/libs/TcSoaStrongModelMES_14000.2.0.jar new file mode 100644 index 0000000..382d391 Binary files /dev/null and b/lib2/libs/TcSoaStrongModelMES_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelMROCore_14000.2.0.jar b/lib2/libs/TcSoaStrongModelMROCore_14000.2.0.jar new file mode 100644 index 0000000..04dcecf Binary files /dev/null and b/lib2/libs/TcSoaStrongModelMROCore_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelMaterialMgmt_14000.2.0.jar b/lib2/libs/TcSoaStrongModelMaterialMgmt_14000.2.0.jar new file mode 100644 index 0000000..65e8fb1 Binary files /dev/null and b/lib2/libs/TcSoaStrongModelMaterialMgmt_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelMesIssueMgmt_14000.2.0.jar b/lib2/libs/TcSoaStrongModelMesIssueMgmt_14000.2.0.jar new file mode 100644 index 0000000..f099bdb Binary files /dev/null and b/lib2/libs/TcSoaStrongModelMesIssueMgmt_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelModelCore_14000.2.0.jar b/lib2/libs/TcSoaStrongModelModelCore_14000.2.0.jar new file mode 100644 index 0000000..ba331d4 Binary files /dev/null and b/lib2/libs/TcSoaStrongModelModelCore_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelNX0tcin_14000.2.0.jar b/lib2/libs/TcSoaStrongModelNX0tcin_14000.2.0.jar new file mode 100644 index 0000000..f45315e Binary files /dev/null and b/lib2/libs/TcSoaStrongModelNX0tcin_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelNXB0stage_14000.2.0.jar b/lib2/libs/TcSoaStrongModelNXB0stage_14000.2.0.jar new file mode 100644 index 0000000..d8deccf Binary files /dev/null and b/lib2/libs/TcSoaStrongModelNXB0stage_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelNXP0pid_14000.2.0.jar b/lib2/libs/TcSoaStrongModelNXP0pid_14000.2.0.jar new file mode 100644 index 0000000..88b5c7f Binary files /dev/null and b/lib2/libs/TcSoaStrongModelNXP0pid_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelPMI_14000.2.0.jar b/lib2/libs/TcSoaStrongModelPMI_14000.2.0.jar new file mode 100644 index 0000000..94d4fd6 Binary files /dev/null and b/lib2/libs/TcSoaStrongModelPMI_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelPartition_14000.2.0.jar b/lib2/libs/TcSoaStrongModelPartition_14000.2.0.jar new file mode 100644 index 0000000..859aa49 Binary files /dev/null and b/lib2/libs/TcSoaStrongModelPartition_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelPenetrationmgmt_14000.2.0.jar b/lib2/libs/TcSoaStrongModelPenetrationmgmt_14000.2.0.jar new file mode 100644 index 0000000..cfc5fc0 Binary files /dev/null and b/lib2/libs/TcSoaStrongModelPenetrationmgmt_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelPkgArt_14000.2.0.jar b/lib2/libs/TcSoaStrongModelPkgArt_14000.2.0.jar new file mode 100644 index 0000000..55882eb Binary files /dev/null and b/lib2/libs/TcSoaStrongModelPkgArt_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelPlp0ProdLinePlan_14000.2.0.jar b/lib2/libs/TcSoaStrongModelPlp0ProdLinePlan_14000.2.0.jar new file mode 100644 index 0000000..d8dfe90 Binary files /dev/null and b/lib2/libs/TcSoaStrongModelPlp0ProdLinePlan_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelProductVariant_14000.2.0.jar b/lib2/libs/TcSoaStrongModelProductVariant_14000.2.0.jar new file mode 100644 index 0000000..a4975d8 Binary files /dev/null and b/lib2/libs/TcSoaStrongModelProductVariant_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelRealization_14000.2.0.jar b/lib2/libs/TcSoaStrongModelRealization_14000.2.0.jar new file mode 100644 index 0000000..1f96357 Binary files /dev/null and b/lib2/libs/TcSoaStrongModelRealization_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelSSPSPRAlignment_14000.2.0.jar b/lib2/libs/TcSoaStrongModelSSPSPRAlignment_14000.2.0.jar new file mode 100644 index 0000000..a5ff6ab Binary files /dev/null and b/lib2/libs/TcSoaStrongModelSSPSPRAlignment_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelScdt_14000.2.0.jar b/lib2/libs/TcSoaStrongModelScdt_14000.2.0.jar new file mode 100644 index 0000000..8be1a50 Binary files /dev/null and b/lib2/libs/TcSoaStrongModelScdt_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelScmCc_14000.2.0.jar b/lib2/libs/TcSoaStrongModelScmCc_14000.2.0.jar new file mode 100644 index 0000000..12cc5b6 Binary files /dev/null and b/lib2/libs/TcSoaStrongModelScmCc_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelServiceEventManagement_14000.2.0.jar b/lib2/libs/TcSoaStrongModelServiceEventManagement_14000.2.0.jar new file mode 100644 index 0000000..ac93132 Binary files /dev/null and b/lib2/libs/TcSoaStrongModelServiceEventManagement_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelServiceProcessing_14000.2.0.jar b/lib2/libs/TcSoaStrongModelServiceProcessing_14000.2.0.jar new file mode 100644 index 0000000..917660f Binary files /dev/null and b/lib2/libs/TcSoaStrongModelServiceProcessing_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelServiceRequest_14000.2.0.jar b/lib2/libs/TcSoaStrongModelServiceRequest_14000.2.0.jar new file mode 100644 index 0000000..62d4fe6 Binary files /dev/null and b/lib2/libs/TcSoaStrongModelServiceRequest_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelSmdsysmodeling_14000.2.0.jar b/lib2/libs/TcSoaStrongModelSmdsysmodeling_14000.2.0.jar new file mode 100644 index 0000000..f17c4da Binary files /dev/null and b/lib2/libs/TcSoaStrongModelSmdsysmodeling_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelSpecMgr_14000.2.0.jar b/lib2/libs/TcSoaStrongModelSpecMgr_14000.2.0.jar new file mode 100644 index 0000000..eb89b70 Binary files /dev/null and b/lib2/libs/TcSoaStrongModelSpecMgr_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelStockMaterial_14000.2.0.jar b/lib2/libs/TcSoaStrongModelStockMaterial_14000.2.0.jar new file mode 100644 index 0000000..4a75151 Binary files /dev/null and b/lib2/libs/TcSoaStrongModelStockMaterial_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelSystemsEngineering_14000.2.0.jar b/lib2/libs/TcSoaStrongModelSystemsEngineering_14000.2.0.jar new file mode 100644 index 0000000..8a754f3 Binary files /dev/null and b/lib2/libs/TcSoaStrongModelSystemsEngineering_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelTcae_14000.2.0.jar b/lib2/libs/TcSoaStrongModelTcae_14000.2.0.jar new file mode 100644 index 0000000..250321f Binary files /dev/null and b/lib2/libs/TcSoaStrongModelTcae_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelTransactionProcessing_14000.2.0.jar b/lib2/libs/TcSoaStrongModelTransactionProcessing_14000.2.0.jar new file mode 100644 index 0000000..ed8a354 Binary files /dev/null and b/lib2/libs/TcSoaStrongModelTransactionProcessing_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelVendorManagement_14000.2.0.jar b/lib2/libs/TcSoaStrongModelVendorManagement_14000.2.0.jar new file mode 100644 index 0000000..05111e4 Binary files /dev/null and b/lib2/libs/TcSoaStrongModelVendorManagement_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelWeldManagement_14000.2.0.jar b/lib2/libs/TcSoaStrongModelWeldManagement_14000.2.0.jar new file mode 100644 index 0000000..e679ffa Binary files /dev/null and b/lib2/libs/TcSoaStrongModelWeldManagement_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModelWorkPackageManagement_14000.2.0.jar b/lib2/libs/TcSoaStrongModelWorkPackageManagement_14000.2.0.jar new file mode 100644 index 0000000..cf08707 Binary files /dev/null and b/lib2/libs/TcSoaStrongModelWorkPackageManagement_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStrongModel_14000.2.0.jar b/lib2/libs/TcSoaStrongModel_14000.2.0.jar new file mode 100644 index 0000000..62249d6 Binary files /dev/null and b/lib2/libs/TcSoaStrongModel_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStructureManagementLoose_14000.2.0.jar b/lib2/libs/TcSoaStructureManagementLoose_14000.2.0.jar new file mode 100644 index 0000000..4a2d050 Binary files /dev/null and b/lib2/libs/TcSoaStructureManagementLoose_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStructureManagementRac_14000.2.0.jar b/lib2/libs/TcSoaStructureManagementRac_14000.2.0.jar new file mode 100644 index 0000000..7fe9a55 Binary files /dev/null and b/lib2/libs/TcSoaStructureManagementRac_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaStructureManagementStrong_14000.2.0.jar b/lib2/libs/TcSoaStructureManagementStrong_14000.2.0.jar new file mode 100644 index 0000000..dc73e9d Binary files /dev/null and b/lib2/libs/TcSoaStructureManagementStrong_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaSvcProcessingLoose_14000.2.0.jar b/lib2/libs/TcSoaSvcProcessingLoose_14000.2.0.jar new file mode 100644 index 0000000..a9f6714 Binary files /dev/null and b/lib2/libs/TcSoaSvcProcessingLoose_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaSvcProcessingRac_14000.2.0.jar b/lib2/libs/TcSoaSvcProcessingRac_14000.2.0.jar new file mode 100644 index 0000000..4ffa848 Binary files /dev/null and b/lib2/libs/TcSoaSvcProcessingRac_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaSvcProcessingStrong_14000.2.0.jar b/lib2/libs/TcSoaSvcProcessingStrong_14000.2.0.jar new file mode 100644 index 0000000..af82325 Binary files /dev/null and b/lib2/libs/TcSoaSvcProcessingStrong_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaSvcRequestLoose_14000.2.0.jar b/lib2/libs/TcSoaSvcRequestLoose_14000.2.0.jar new file mode 100644 index 0000000..3289000 Binary files /dev/null and b/lib2/libs/TcSoaSvcRequestLoose_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaSvcRequestRac_14000.2.0.jar b/lib2/libs/TcSoaSvcRequestRac_14000.2.0.jar new file mode 100644 index 0000000..23ab3f7 Binary files /dev/null and b/lib2/libs/TcSoaSvcRequestRac_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaSvcRequestStrong_14000.2.0.jar b/lib2/libs/TcSoaSvcRequestStrong_14000.2.0.jar new file mode 100644 index 0000000..adda0fa Binary files /dev/null and b/lib2/libs/TcSoaSvcRequestStrong_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaSystemsEngineeringLoose_14000.2.0.jar b/lib2/libs/TcSoaSystemsEngineeringLoose_14000.2.0.jar new file mode 100644 index 0000000..6013444 Binary files /dev/null and b/lib2/libs/TcSoaSystemsEngineeringLoose_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaSystemsEngineeringRac_14000.2.0.jar b/lib2/libs/TcSoaSystemsEngineeringRac_14000.2.0.jar new file mode 100644 index 0000000..2815d2f Binary files /dev/null and b/lib2/libs/TcSoaSystemsEngineeringRac_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaSystemsEngineeringStrong_14000.2.0.jar b/lib2/libs/TcSoaSystemsEngineeringStrong_14000.2.0.jar new file mode 100644 index 0000000..09a95db Binary files /dev/null and b/lib2/libs/TcSoaSystemsEngineeringStrong_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaTranslationLoose_14000.2.0.jar b/lib2/libs/TcSoaTranslationLoose_14000.2.0.jar new file mode 100644 index 0000000..1e2c787 Binary files /dev/null and b/lib2/libs/TcSoaTranslationLoose_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaTranslationRac_14000.2.0.jar b/lib2/libs/TcSoaTranslationRac_14000.2.0.jar new file mode 100644 index 0000000..f9020e6 Binary files /dev/null and b/lib2/libs/TcSoaTranslationRac_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaTranslationStrong_14000.2.0.jar b/lib2/libs/TcSoaTranslationStrong_14000.2.0.jar new file mode 100644 index 0000000..273bca2 Binary files /dev/null and b/lib2/libs/TcSoaTranslationStrong_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaVendorManagementLoose_14000.2.0.jar b/lib2/libs/TcSoaVendorManagementLoose_14000.2.0.jar new file mode 100644 index 0000000..c91c781 Binary files /dev/null and b/lib2/libs/TcSoaVendorManagementLoose_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaVendorManagementRac_14000.2.0.jar b/lib2/libs/TcSoaVendorManagementRac_14000.2.0.jar new file mode 100644 index 0000000..278d391 Binary files /dev/null and b/lib2/libs/TcSoaVendorManagementRac_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaVendorManagementStrong_14000.2.0.jar b/lib2/libs/TcSoaVendorManagementStrong_14000.2.0.jar new file mode 100644 index 0000000..de96b7b Binary files /dev/null and b/lib2/libs/TcSoaVendorManagementStrong_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaVisualizationLoose_14000.2.0.jar b/lib2/libs/TcSoaVisualizationLoose_14000.2.0.jar new file mode 100644 index 0000000..f11faa6 Binary files /dev/null and b/lib2/libs/TcSoaVisualizationLoose_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaVisualizationRac_14000.2.0.jar b/lib2/libs/TcSoaVisualizationRac_14000.2.0.jar new file mode 100644 index 0000000..9efd7c6 Binary files /dev/null and b/lib2/libs/TcSoaVisualizationRac_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaVisualizationStrong_14000.2.0.jar b/lib2/libs/TcSoaVisualizationStrong_14000.2.0.jar new file mode 100644 index 0000000..4bba19f Binary files /dev/null and b/lib2/libs/TcSoaVisualizationStrong_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaWireHarnessLoose_14000.2.0.jar b/lib2/libs/TcSoaWireHarnessLoose_14000.2.0.jar new file mode 100644 index 0000000..cdf76cd Binary files /dev/null and b/lib2/libs/TcSoaWireHarnessLoose_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaWireHarnessRac_14000.2.0.jar b/lib2/libs/TcSoaWireHarnessRac_14000.2.0.jar new file mode 100644 index 0000000..442e89c Binary files /dev/null and b/lib2/libs/TcSoaWireHarnessRac_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaWireHarnessStrong_14000.2.0.jar b/lib2/libs/TcSoaWireHarnessStrong_14000.2.0.jar new file mode 100644 index 0000000..4ba3053 Binary files /dev/null and b/lib2/libs/TcSoaWireHarnessStrong_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaWorkflowLoose_14000.2.0.jar b/lib2/libs/TcSoaWorkflowLoose_14000.2.0.jar new file mode 100644 index 0000000..5cc17b4 Binary files /dev/null and b/lib2/libs/TcSoaWorkflowLoose_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaWorkflowRac_14000.2.0.jar b/lib2/libs/TcSoaWorkflowRac_14000.2.0.jar new file mode 100644 index 0000000..9ea27dc Binary files /dev/null and b/lib2/libs/TcSoaWorkflowRac_14000.2.0.jar differ diff --git a/lib2/libs/TcSoaWorkflowStrong_14000.2.0.jar b/lib2/libs/TcSoaWorkflowStrong_14000.2.0.jar new file mode 100644 index 0000000..a4de177 Binary files /dev/null and b/lib2/libs/TcSoaWorkflowStrong_14000.2.0.jar differ diff --git a/lib2/libs/Tgm0SoaStrongModelTargetManagement_14000.2.0.jar b/lib2/libs/Tgm0SoaStrongModelTargetManagement_14000.2.0.jar new file mode 100644 index 0000000..eb4b197 Binary files /dev/null and b/lib2/libs/Tgm0SoaStrongModelTargetManagement_14000.2.0.jar differ diff --git a/lib2/libs/Tgm0SoaTargetManagementLoose_14000.2.0.jar b/lib2/libs/Tgm0SoaTargetManagementLoose_14000.2.0.jar new file mode 100644 index 0000000..d95fdd8 Binary files /dev/null and b/lib2/libs/Tgm0SoaTargetManagementLoose_14000.2.0.jar differ diff --git a/lib2/libs/Tgm0SoaTargetManagementStrong_14000.2.0.jar b/lib2/libs/Tgm0SoaTargetManagementStrong_14000.2.0.jar new file mode 100644 index 0000000..819b81f Binary files /dev/null and b/lib2/libs/Tgm0SoaTargetManagementStrong_14000.2.0.jar differ diff --git a/lib2/libs/Tm0SoaStrongModelTestManagement_14000.2.0.jar b/lib2/libs/Tm0SoaStrongModelTestManagement_14000.2.0.jar new file mode 100644 index 0000000..fada2b0 Binary files /dev/null and b/lib2/libs/Tm0SoaStrongModelTestManagement_14000.2.0.jar differ diff --git a/lib2/libs/Tm0SoaTestManagementLoose_14000.2.0.jar b/lib2/libs/Tm0SoaTestManagementLoose_14000.2.0.jar new file mode 100644 index 0000000..d47946c Binary files /dev/null and b/lib2/libs/Tm0SoaTestManagementLoose_14000.2.0.jar differ diff --git a/lib2/libs/Tm0SoaTestManagementRac_14000.2.0.jar b/lib2/libs/Tm0SoaTestManagementRac_14000.2.0.jar new file mode 100644 index 0000000..f6936b4 Binary files /dev/null and b/lib2/libs/Tm0SoaTestManagementRac_14000.2.0.jar differ diff --git a/lib2/libs/Tm0SoaTestManagementStrong_14000.2.0.jar b/lib2/libs/Tm0SoaTestManagementStrong_14000.2.0.jar new file mode 100644 index 0000000..189c228 Binary files /dev/null and b/lib2/libs/Tm0SoaTestManagementStrong_14000.2.0.jar differ diff --git a/lib2/libs/Val0SoaNXValidationLoose_14000.2.0.jar b/lib2/libs/Val0SoaNXValidationLoose_14000.2.0.jar new file mode 100644 index 0000000..939ca4d Binary files /dev/null and b/lib2/libs/Val0SoaNXValidationLoose_14000.2.0.jar differ diff --git a/lib2/libs/Val0SoaNXValidationRac_14000.2.0.jar b/lib2/libs/Val0SoaNXValidationRac_14000.2.0.jar new file mode 100644 index 0000000..8e7848e Binary files /dev/null and b/lib2/libs/Val0SoaNXValidationRac_14000.2.0.jar differ diff --git a/lib2/libs/Val0SoaNXValidationStrong_14000.2.0.jar b/lib2/libs/Val0SoaNXValidationStrong_14000.2.0.jar new file mode 100644 index 0000000..30df6f7 Binary files /dev/null and b/lib2/libs/Val0SoaNXValidationStrong_14000.2.0.jar differ diff --git a/lib2/libs/Val0SoaStrongModelNXValidation_14000.2.0.jar b/lib2/libs/Val0SoaStrongModelNXValidation_14000.2.0.jar new file mode 100644 index 0000000..6eebd72 Binary files /dev/null and b/lib2/libs/Val0SoaStrongModelNXValidation_14000.2.0.jar differ diff --git a/lib2/libs/Val1SoaCfgValidationLoose_14000.2.0.jar b/lib2/libs/Val1SoaCfgValidationLoose_14000.2.0.jar new file mode 100644 index 0000000..0f09bad Binary files /dev/null and b/lib2/libs/Val1SoaCfgValidationLoose_14000.2.0.jar differ diff --git a/lib2/libs/Val1SoaCfgValidationRac_14000.2.0.jar b/lib2/libs/Val1SoaCfgValidationRac_14000.2.0.jar new file mode 100644 index 0000000..cc52c4f Binary files /dev/null and b/lib2/libs/Val1SoaCfgValidationRac_14000.2.0.jar differ diff --git a/lib2/libs/Val1SoaCfgValidationStrong_14000.2.0.jar b/lib2/libs/Val1SoaCfgValidationStrong_14000.2.0.jar new file mode 100644 index 0000000..6af6df0 Binary files /dev/null and b/lib2/libs/Val1SoaCfgValidationStrong_14000.2.0.jar differ diff --git a/lib2/libs/Val1SoaStrongModelCfgValidation_14000.2.0.jar b/lib2/libs/Val1SoaStrongModelCfgValidation_14000.2.0.jar new file mode 100644 index 0000000..9dea99a Binary files /dev/null and b/lib2/libs/Val1SoaStrongModelCfgValidation_14000.2.0.jar differ diff --git a/lib2/libs/WdM0SoaWeldManagementLoose_14000.2.0.jar b/lib2/libs/WdM0SoaWeldManagementLoose_14000.2.0.jar new file mode 100644 index 0000000..174b124 Binary files /dev/null and b/lib2/libs/WdM0SoaWeldManagementLoose_14000.2.0.jar differ diff --git a/lib2/libs/WdM0SoaWeldManagementRac_14000.2.0.jar b/lib2/libs/WdM0SoaWeldManagementRac_14000.2.0.jar new file mode 100644 index 0000000..3c2954f Binary files /dev/null and b/lib2/libs/WdM0SoaWeldManagementRac_14000.2.0.jar differ diff --git a/lib2/libs/WdM0SoaWeldManagementStrong_14000.2.0.jar b/lib2/libs/WdM0SoaWeldManagementStrong_14000.2.0.jar new file mode 100644 index 0000000..7c491dc Binary files /dev/null and b/lib2/libs/WdM0SoaWeldManagementStrong_14000.2.0.jar differ diff --git a/lib2/libs/Wnb0SoaStrongModelWeightandBalance_14000.2.0.jar b/lib2/libs/Wnb0SoaStrongModelWeightandBalance_14000.2.0.jar new file mode 100644 index 0000000..7c05e27 Binary files /dev/null and b/lib2/libs/Wnb0SoaStrongModelWeightandBalance_14000.2.0.jar differ diff --git a/lib2/libs/Wnb0SoaWeightAndBalanceLoose_14000.2.0.jar b/lib2/libs/Wnb0SoaWeightAndBalanceLoose_14000.2.0.jar new file mode 100644 index 0000000..e243861 Binary files /dev/null and b/lib2/libs/Wnb0SoaWeightAndBalanceLoose_14000.2.0.jar differ diff --git a/lib2/libs/Wnb0SoaWeightAndBalanceRac_14000.2.0.jar b/lib2/libs/Wnb0SoaWeightAndBalanceRac_14000.2.0.jar new file mode 100644 index 0000000..605c6d8 Binary files /dev/null and b/lib2/libs/Wnb0SoaWeightAndBalanceRac_14000.2.0.jar differ diff --git a/lib2/libs/Wnb0SoaWeightAndBalanceStrong_14000.2.0.jar b/lib2/libs/Wnb0SoaWeightAndBalanceStrong_14000.2.0.jar new file mode 100644 index 0000000..791651d Binary files /dev/null and b/lib2/libs/Wnb0SoaWeightAndBalanceStrong_14000.2.0.jar differ diff --git a/lib2/libs/Xc0SoaStrongModelShareCollaboration_14000.2.0.jar b/lib2/libs/Xc0SoaStrongModelShareCollaboration_14000.2.0.jar new file mode 100644 index 0000000..3114e1d Binary files /dev/null and b/lib2/libs/Xc0SoaStrongModelShareCollaboration_14000.2.0.jar differ diff --git a/lib2/libs/com.teamcenter.rac.aif.registryeditor_14000.2.0.jar b/lib2/libs/com.teamcenter.rac.aif.registryeditor_14000.2.0.jar new file mode 100644 index 0000000..99887eb Binary files /dev/null and b/lib2/libs/com.teamcenter.rac.aif.registryeditor_14000.2.0.jar differ diff --git a/lib2/libs/com.teamcenter.rac.aifrcp_14000.2.0.jar b/lib2/libs/com.teamcenter.rac.aifrcp_14000.2.0.jar new file mode 100644 index 0000000..24d7119 Binary files /dev/null and b/lib2/libs/com.teamcenter.rac.aifrcp_14000.2.0.jar differ diff --git a/lib2/libs/com.teamcenter.rac.external_14000.2.0/ApplicationRegistryClient.jar b/lib2/libs/com.teamcenter.rac.external_14000.2.0/ApplicationRegistryClient.jar new file mode 100644 index 0000000..a4dfd25 Binary files /dev/null and b/lib2/libs/com.teamcenter.rac.external_14000.2.0/ApplicationRegistryClient.jar differ diff --git a/lib2/libs/com.teamcenter.rac.external_14000.2.0/META-INF/MANIFEST.MF b/lib2/libs/com.teamcenter.rac.external_14000.2.0/META-INF/MANIFEST.MF new file mode 100644 index 0000000..b671757 --- /dev/null +++ b/lib2/libs/com.teamcenter.rac.external_14000.2.0/META-INF/MANIFEST.MF @@ -0,0 +1,107 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: External Plug-in +Automatic-Module-Name: com.teamcenter.rac.external +Bundle-SymbolicName: com.teamcenter.rac.external +Bundle-Version: 14000.2.0 +TC-Version: V14000.2.0.11_20230301.00 +Bundle-Vendor: Siemens PLM Software, Inc. +Eclipse-BuddyPolicy: registered +Bundle-RequiredExecutionEnvironment: JavaSE-11 +Require-Bundle: system.bundle, + org.apache.logging.log4j;visibility:=reexport, + org.apache.xerces;visibility:=reexport +Bundle-ClassPath: jakarta.activation.jar, + antlr-2.7.2.jar, + ApplicationRegistryClient.jar, + commons-httpclient-contrib-3.1.jar, + concurrent-1.3.2.jar, + fccclient.jar, + fscclient.jar, + jakarta.xml.bind-api.jar, + jaxb-impl.jar, + jgraph.jar, + mail.jar, + soap.jar, + wrapper-3.0.3.jar +Export-Package: ., + COM.inovie.services.integration.applicationRegistry.client, + COM.inovie.services.integration.applicationRegistry.clientAxis, + COM.inovie.services.integration.applicationRegistry.common, + COM.inovie.services.integration.applicationRegistry.xml, + COM.inovie.services.integration.common, + COM.inovie.services.integration.objectChooser.constants, + COM.inovie.services.integration.objectChooser.xml, + EDU.oswego.cs.dl.util.concurrent, + EDU.oswego.cs.dl.util.concurrent.misc, + antlr, + antlr.actions.cpp, + antlr.actions.java, + antlr.collections, + antlr.collections.impl, + antlr.debug, + antlr.debug.misc, + antlr.preprocessor, + com.silveregg.wrapper, + com.sun.mail.handlers, + com.sun.mail.iap, + com.sun.mail.imap, + com.sun.mail.imap.protocol, + com.sun.mail.pop3, + com.sun.mail.smtp, + com.sun.mail.util, + com.teamcenter.fms.clientcache, + com.teamcenter.fms.clientcache.proxy, + com.teamcenter.fms.config, + com.teamcenter.fms.i18n, + com.teamcenter.fms.servercache, + com.teamcenter.fms.servercache.proxy, + com.teamcenter.fms.servercache.proxy.common, + com.teamcenter.fms.servercache.proxy.javanet, + com.teamcenter.fms.ticket, + com.teamcenter.fms.util, + com.teamcenter.fms.util.authentication, + com.teamcenter.fms.util.formdata, + javax.activation, + javax.mail, + javax.mail.event, + javax.mail.internet, + javax.mail.search, + javax.mail.util, + javax.xml.bind, + javax.xml.bind.annotation, + javax.xml.bind.annotation.adapters, + javax.xml.bind.attachment, + javax.xml.bind.helpers, + javax.xml.bind.util, + org.apache.commons.httpclient.contrib.auth, + org.apache.commons.httpclient.contrib.benchmark, + org.apache.commons.httpclient.contrib.methods, + org.apache.commons.httpclient.contrib.proxy, + org.apache.commons.httpclient.contrib.ssl, + org.apache.commons.httpclient.contrib.utils, + org.apache.soap, + org.apache.soap.encoding, + org.apache.soap.encoding.literalxml, + org.apache.soap.encoding.soapenc, + org.apache.soap.encoding.xmi, + org.apache.soap.messaging, + org.apache.soap.providers, + org.apache.soap.providers.com, + org.apache.soap.rpc, + org.apache.soap.server, + org.apache.soap.server.http, + org.apache.soap.transport, + org.apache.soap.transport.http, + org.apache.soap.transport.smtp, + org.apache.soap.util, + org.apache.soap.util.mime, + org.apache.soap.util.net, + org.apache.soap.util.xml, + org.jgraph, + org.jgraph.event, + org.jgraph.graph, + org.jgraph.plaf, + org.jgraph.plaf.basic, + org.tanukisoftware.wrapper, + org.tanukisoftware.wrapper.resources diff --git a/lib2/libs/com.teamcenter.rac.external_14000.2.0/TcDoclet.jar b/lib2/libs/com.teamcenter.rac.external_14000.2.0/TcDoclet.jar new file mode 100644 index 0000000..6841c55 Binary files /dev/null and b/lib2/libs/com.teamcenter.rac.external_14000.2.0/TcDoclet.jar differ diff --git a/lib2/libs/com.teamcenter.rac.external_14000.2.0/commons-httpclient-contrib-3.1.jar b/lib2/libs/com.teamcenter.rac.external_14000.2.0/commons-httpclient-contrib-3.1.jar new file mode 100644 index 0000000..af5c5de Binary files /dev/null and b/lib2/libs/com.teamcenter.rac.external_14000.2.0/commons-httpclient-contrib-3.1.jar differ diff --git a/lib2/libs/com.teamcenter.rac.external_14000.2.0/fccclient.jar b/lib2/libs/com.teamcenter.rac.external_14000.2.0/fccclient.jar new file mode 100644 index 0000000..bba7e5f Binary files /dev/null and b/lib2/libs/com.teamcenter.rac.external_14000.2.0/fccclient.jar differ diff --git a/lib2/libs/com.teamcenter.rac.external_14000.2.0/fscclient.jar b/lib2/libs/com.teamcenter.rac.external_14000.2.0/fscclient.jar new file mode 100644 index 0000000..d139d1d Binary files /dev/null and b/lib2/libs/com.teamcenter.rac.external_14000.2.0/fscclient.jar differ diff --git a/lib2/libs/com.teamcenter.rac.external_14000.2.0/jakarta.activation.jar b/lib2/libs/com.teamcenter.rac.external_14000.2.0/jakarta.activation.jar new file mode 100644 index 0000000..bddea49 Binary files /dev/null and b/lib2/libs/com.teamcenter.rac.external_14000.2.0/jakarta.activation.jar differ diff --git a/lib2/libs/com.teamcenter.rac.external_14000.2.0/jakarta.xml.bind-api.jar b/lib2/libs/com.teamcenter.rac.external_14000.2.0/jakarta.xml.bind-api.jar new file mode 100644 index 0000000..b8c7dc1 Binary files /dev/null and b/lib2/libs/com.teamcenter.rac.external_14000.2.0/jakarta.xml.bind-api.jar differ diff --git a/lib2/libs/com.teamcenter.rac.external_14000.2.0/jaxb-impl.jar b/lib2/libs/com.teamcenter.rac.external_14000.2.0/jaxb-impl.jar new file mode 100644 index 0000000..87ed238 Binary files /dev/null and b/lib2/libs/com.teamcenter.rac.external_14000.2.0/jaxb-impl.jar differ diff --git a/lib2/libs/com.teamcenter.rac.external_14000.2.0/jgraph.jar b/lib2/libs/com.teamcenter.rac.external_14000.2.0/jgraph.jar new file mode 100644 index 0000000..b12670f Binary files /dev/null and b/lib2/libs/com.teamcenter.rac.external_14000.2.0/jgraph.jar differ diff --git a/lib2/libs/com.teamcenter.rac.external_14000.2.0/mail.jar b/lib2/libs/com.teamcenter.rac.external_14000.2.0/mail.jar new file mode 100644 index 0000000..9d60d13 Binary files /dev/null and b/lib2/libs/com.teamcenter.rac.external_14000.2.0/mail.jar differ diff --git a/lib2/libs/com.teamcenter.rac.external_14000.2.0/soap.jar b/lib2/libs/com.teamcenter.rac.external_14000.2.0/soap.jar new file mode 100644 index 0000000..3f14618 Binary files /dev/null and b/lib2/libs/com.teamcenter.rac.external_14000.2.0/soap.jar differ diff --git a/lib2/libs/com.teamcenter.rac.external_14000.2.0/tcserverjavabinding.jar b/lib2/libs/com.teamcenter.rac.external_14000.2.0/tcserverjavabinding.jar new file mode 100644 index 0000000..7c3070b Binary files /dev/null and b/lib2/libs/com.teamcenter.rac.external_14000.2.0/tcserverjavabinding.jar differ diff --git a/lib2/libs/com.teamcenter.rac.kernel.testing_14000.2.0.jar b/lib2/libs/com.teamcenter.rac.kernel.testing_14000.2.0.jar new file mode 100644 index 0000000..fc26d50 Binary files /dev/null and b/lib2/libs/com.teamcenter.rac.kernel.testing_14000.2.0.jar differ diff --git a/lib2/libs/com.teamcenter.rac.kernel_14000.2.0.jar b/lib2/libs/com.teamcenter.rac.kernel_14000.2.0.jar new file mode 100644 index 0000000..469e9a8 Binary files /dev/null and b/lib2/libs/com.teamcenter.rac.kernel_14000.2.0.jar differ diff --git a/lib2/libs/com.teamcenter.rac.util.testing_14000.2.0.jar b/lib2/libs/com.teamcenter.rac.util.testing_14000.2.0.jar new file mode 100644 index 0000000..c4f3fe9 Binary files /dev/null and b/lib2/libs/com.teamcenter.rac.util.testing_14000.2.0.jar differ diff --git a/lib2/libs/com.teamcenter.rac.util_14000.2.0.jar b/lib2/libs/com.teamcenter.rac.util_14000.2.0.jar new file mode 100644 index 0000000..8273f15 Binary files /dev/null and b/lib2/libs/com.teamcenter.rac.util_14000.2.0.jar differ diff --git a/lib2/libs/commons-codec-1.11.jar b/lib2/libs/commons-codec-1.11.jar new file mode 100644 index 0000000..2245120 Binary files /dev/null and b/lib2/libs/commons-codec-1.11.jar differ diff --git a/lib2/libs/commons-logging-1.2.jar b/lib2/libs/commons-logging-1.2.jar new file mode 100644 index 0000000..93a3b9f Binary files /dev/null and b/lib2/libs/commons-logging-1.2.jar differ diff --git a/lib2/libs/fccclient.jar b/lib2/libs/fccclient.jar new file mode 100644 index 0000000..bba7e5f Binary files /dev/null and b/lib2/libs/fccclient.jar differ diff --git a/lib2/libs/fmsticket.jar b/lib2/libs/fmsticket.jar new file mode 100644 index 0000000..841b0b4 Binary files /dev/null and b/lib2/libs/fmsticket.jar differ diff --git a/lib2/libs/fscclient.jar b/lib2/libs/fscclient.jar new file mode 100644 index 0000000..d139d1d Binary files /dev/null and b/lib2/libs/fscclient.jar differ diff --git a/lib2/libs/httpclient-4.5.13.jar b/lib2/libs/httpclient-4.5.13.jar new file mode 100644 index 0000000..218ee25 Binary files /dev/null and b/lib2/libs/httpclient-4.5.13.jar differ diff --git a/lib2/libs/httpcore-4.4.13.jar b/lib2/libs/httpcore-4.4.13.jar new file mode 100644 index 0000000..163dc43 Binary files /dev/null and b/lib2/libs/httpcore-4.4.13.jar differ diff --git a/lib2/libs/httpmime-4.5.13.jar b/lib2/libs/httpmime-4.5.13.jar new file mode 100644 index 0000000..cc52f44 Binary files /dev/null and b/lib2/libs/httpmime-4.5.13.jar differ diff --git a/lib2/libs/jackson-annotations-2.13.4.jar b/lib2/libs/jackson-annotations-2.13.4.jar new file mode 100644 index 0000000..6664d1c Binary files /dev/null and b/lib2/libs/jackson-annotations-2.13.4.jar differ diff --git a/lib2/libs/jackson-core-2.13.4.jar b/lib2/libs/jackson-core-2.13.4.jar new file mode 100644 index 0000000..74b8cfa Binary files /dev/null and b/lib2/libs/jackson-core-2.13.4.jar differ diff --git a/lib2/libs/jackson-databind-2.13.4.2.jar b/lib2/libs/jackson-databind-2.13.4.2.jar new file mode 100644 index 0000000..2ed9c45 Binary files /dev/null and b/lib2/libs/jackson-databind-2.13.4.2.jar differ diff --git a/lib2/libs/jakarta.activation.jar b/lib2/libs/jakarta.activation.jar new file mode 100644 index 0000000..bddea49 Binary files /dev/null and b/lib2/libs/jakarta.activation.jar differ diff --git a/lib2/libs/jakarta.xml.bind-api.jar b/lib2/libs/jakarta.xml.bind-api.jar new file mode 100644 index 0000000..b8c7dc1 Binary files /dev/null and b/lib2/libs/jakarta.xml.bind-api.jar differ diff --git a/lib2/libs/jaxb-impl.jar b/lib2/libs/jaxb-impl.jar new file mode 100644 index 0000000..87ed238 Binary files /dev/null and b/lib2/libs/jaxb-impl.jar differ diff --git a/lib2/libs/log4j-1.2-api-2.17.1.jar b/lib2/libs/log4j-1.2-api-2.17.1.jar new file mode 100644 index 0000000..ef4f08d Binary files /dev/null and b/lib2/libs/log4j-1.2-api-2.17.1.jar differ diff --git a/lib2/libs/log4j-api-2.17.1.jar b/lib2/libs/log4j-api-2.17.1.jar new file mode 100644 index 0000000..1aae243 Binary files /dev/null and b/lib2/libs/log4j-api-2.17.1.jar differ diff --git a/lib2/libs/log4j-core-2.17.1.jar b/lib2/libs/log4j-core-2.17.1.jar new file mode 100644 index 0000000..4682527 Binary files /dev/null and b/lib2/libs/log4j-core-2.17.1.jar differ diff --git a/lib2/libs/serializer.jar b/lib2/libs/serializer.jar new file mode 100644 index 0000000..10c881c Binary files /dev/null and b/lib2/libs/serializer.jar differ diff --git a/lib2/libs/tcmemjavabinding.jar b/lib2/libs/tcmemjavabinding.jar new file mode 100644 index 0000000..db93e6b Binary files /dev/null and b/lib2/libs/tcmemjavabinding.jar differ diff --git a/lib2/libs/tcserverjavabinding.jar b/lib2/libs/tcserverjavabinding.jar new file mode 100644 index 0000000..7c3070b Binary files /dev/null and b/lib2/libs/tcserverjavabinding.jar differ diff --git a/lib2/libs/tctp_14000.2.0.jar b/lib2/libs/tctp_14000.2.0.jar new file mode 100644 index 0000000..1d6546f Binary files /dev/null and b/lib2/libs/tctp_14000.2.0.jar differ diff --git a/lib2/libs/teamcenter_sso_applib.jar b/lib2/libs/teamcenter_sso_applib.jar new file mode 100644 index 0000000..09655d6 Binary files /dev/null and b/lib2/libs/teamcenter_sso_applib.jar differ diff --git a/lib2/libs/teamcenter_sso_common.jar b/lib2/libs/teamcenter_sso_common.jar new file mode 100644 index 0000000..3addf56 Binary files /dev/null and b/lib2/libs/teamcenter_sso_common.jar differ diff --git a/lib2/libs/teamcenter_sso_ldapcustom.jar b/lib2/libs/teamcenter_sso_ldapcustom.jar new file mode 100644 index 0000000..cc38281 Binary files /dev/null and b/lib2/libs/teamcenter_sso_ldapcustom.jar differ diff --git a/lib2/libs/teamcenter_sso_webtoolkit.jar b/lib2/libs/teamcenter_sso_webtoolkit.jar new file mode 100644 index 0000000..aebb308 Binary files /dev/null and b/lib2/libs/teamcenter_sso_webtoolkit.jar differ diff --git a/lib2/libs/wntx64/TcMemBindingv160.dll b/lib2/libs/wntx64/TcMemBindingv160.dll new file mode 100644 index 0000000..fd5eab8 Binary files /dev/null and b/lib2/libs/wntx64/TcMemBindingv160.dll differ diff --git a/lib2/libs/wntx64/TcMemBindingv16064.dll b/lib2/libs/wntx64/TcMemBindingv16064.dll new file mode 100644 index 0000000..4075db9 Binary files /dev/null and b/lib2/libs/wntx64/TcMemBindingv16064.dll differ diff --git a/lib2/libs/wntx64/TcMemJavaBindingv160.dll b/lib2/libs/wntx64/TcMemJavaBindingv160.dll new file mode 100644 index 0000000..1e1186f Binary files /dev/null and b/lib2/libs/wntx64/TcMemJavaBindingv160.dll differ diff --git a/lib2/libs/wntx64/TcMemJavaBindingv16064.dll b/lib2/libs/wntx64/TcMemJavaBindingv16064.dll new file mode 100644 index 0000000..d687913 Binary files /dev/null and b/lib2/libs/wntx64/TcMemJavaBindingv16064.dll differ diff --git a/lib2/libs/wntx64/TcServerBindingv160.dll b/lib2/libs/wntx64/TcServerBindingv160.dll new file mode 100644 index 0000000..03cbb73 Binary files /dev/null and b/lib2/libs/wntx64/TcServerBindingv160.dll differ diff --git a/lib2/libs/wntx64/TcServerBindingv16064.dll b/lib2/libs/wntx64/TcServerBindingv16064.dll new file mode 100644 index 0000000..e247c96 Binary files /dev/null and b/lib2/libs/wntx64/TcServerBindingv16064.dll differ diff --git a/lib2/libs/wntx64/TcServerJavaBindingv160.dll b/lib2/libs/wntx64/TcServerJavaBindingv160.dll new file mode 100644 index 0000000..8ae5cd6 Binary files /dev/null and b/lib2/libs/wntx64/TcServerJavaBindingv160.dll differ diff --git a/lib2/libs/wntx64/TcServerJavaBindingv16064.dll b/lib2/libs/wntx64/TcServerJavaBindingv16064.dll new file mode 100644 index 0000000..0d0f9eb Binary files /dev/null and b/lib2/libs/wntx64/TcServerJavaBindingv16064.dll differ diff --git a/lib2/libs/xercesImpl.jar b/lib2/libs/xercesImpl.jar new file mode 100644 index 0000000..ccbae9f Binary files /dev/null and b/lib2/libs/xercesImpl.jar differ diff --git a/plugin.xml b/plugin.xml new file mode 100644 index 0000000..6716672 --- /dev/null +++ b/plugin.xml @@ -0,0 +1,281 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/com/connnor/mdbksplm/table3/DefaultGroup.java b/src/com/connnor/mdbksplm/table3/DefaultGroup.java new file mode 100644 index 0000000..8a64487 --- /dev/null +++ b/src/com/connnor/mdbksplm/table3/DefaultGroup.java @@ -0,0 +1,98 @@ +package com.connnor.mdbksplm.table3; + /** + * 默认Group实现 + * + * @author Brad.Wu + * @version 1.0 + */ + public class DefaultGroup implements Group { + private int row = 0; + + private int column = 0; + + private int rowSpan = 1; + + private int columnSpan = 1; + + private Object headerValue = null; + + /* + * (非 Javadoc) + * + * @see com.eplat.realty.view.component.table.Group#getRow() + */ + public int getRow() { + return this.row; + } + + /** + * @param row 要设置的 row。 + */ + public void setRow(int row) { + this.row = row; + } + + /* + * (非 Javadoc) + * + * @see com.eplat.realty.view.component.table.Group#getColumn() + */ + public int getColumn() { + return this.column; + } + + /** + * @param column 要设置的 column。 + */ + public void setColumn(int column) { + this.column = column; + } + + /* + * (非 Javadoc) + * + * @see com.eplat.realty.view.component.table.Group#getColumnSpan() + */ + public int getColumnSpan() { + return this.columnSpan; + } + + /** + * @param columnSpan 要设置的 columnSpan。 + */ + public void setColumnSpan(int columnSpan) { + this.columnSpan = columnSpan; + } + + /* + * (非 Javadoc) + * + * @see com.eplat.realty.view.component.table.Group#getRowSpan() + */ + public int getRowSpan() { + return this.rowSpan; + } + + /** + * @param rowSpan 要设置的 rowSpan。 + */ + public void setRowSpan(int rowSpan) { + this.rowSpan = rowSpan; + } + + /* + * (非 Javadoc) + * + * @see com.eplat.realty.view.component.table.Group#getHeaderValue() + */ + public Object getHeaderValue() { + return this.headerValue; + } + + /** + * @param headerValue 要设置的 headerValue。 + */ + public void setHeaderValue(Object headerValue) { + this.headerValue = headerValue; + } +} diff --git a/src/com/connnor/mdbksplm/table3/Group.java b/src/com/connnor/mdbksplm/table3/Group.java new file mode 100644 index 0000000..81dc052 --- /dev/null +++ b/src/com/connnor/mdbksplm/table3/Group.java @@ -0,0 +1,44 @@ +package com.connnor.mdbksplm.table3; + /** + * 列头组 + * + * @author Brad.Wu + * @version 1.0 + */ + public interface Group { + /** + * 获取所在行 + * + * @return + */ + public int getRow(); + + /** + * 获取所在列 + * + * @return + */ + public int getColumn(); + + /** + * 获取占列个数 + * + * @return + */ + public int getColumnSpan(); + + /** + * 获取占行个数 + * + * @return + */ + public int getRowSpan(); + + /** + * 获取文字 + * + * @return + */ + public Object getHeaderValue(); +} + diff --git a/src/com/connnor/mdbksplm/table3/GroupableTableHeader.java b/src/com/connnor/mdbksplm/table3/GroupableTableHeader.java new file mode 100644 index 0000000..125108e --- /dev/null +++ b/src/com/connnor/mdbksplm/table3/GroupableTableHeader.java @@ -0,0 +1,236 @@ +package com.connnor.mdbksplm.table3; + import java.awt.Component; + import java.awt.Rectangle; + import java.util.ArrayList; + import java.util.List; + + import javax.swing.JTable; + import javax.swing.table.JTableHeader; + import javax.swing.table.TableCellRenderer; + import javax.swing.table.TableColumnModel; + + /** + * 可以合并的列头 + * + * @author Brad.Wu + * @version 1.0 + */ +@SuppressWarnings( " serial " ) + public class GroupableTableHeader extends JTableHeader { + private int rowCount = 0; + + private int columnCount = 0; + + private List groups = new ArrayList(); + + public GroupableTableHeader() { + // 这个是必须的, 因为如果可以拖动列的位置, 那么一切都完蛋了. + // 如果你想实现这个功能, 那么只能你自己去做了, 我可不想做这个, 看上去超烦的 + this.setReorderingAllowed(false); + } + + /* + * (非 Javadoc) + * + * @see javax.swing.table.JTableHeader#updateUI() + */ + @Override + public void updateUI() { + setUI(new GroupableTableHeaderUI()); + } + + /* + * 获取指定行列的位置 + */ + public Rectangle getHeaderRect(int row, int column) { + Rectangle r = new Rectangle(); + TableColumnModel cm = getColumnModel(); + + Group group = this.getGroup(row, column); + r.height = getHeight(); + + if (column < 0) { + // x = width = 0; + if (!getComponentOrientation().isLeftToRight()) { + r.x = getWidthInRightToLeft(); + } + } else if (column >= cm.getColumnCount()) { + if (getComponentOrientation().isLeftToRight()) { + r.x = getWidth(); + } + } else { + for (int i = 0; i < group.getColumn(); i++) { + r.x += cm.getColumn(i).getWidth(); + } + for (int i = group.getColumn(), j = group.getColumn() + group.getColumnSpan() - 1; i < j; i++) { + r.width += cm.getColumn(i).getWidth(); + } + if (!getComponentOrientation().isLeftToRight()) { + r.x = getWidthInRightToLeft() - r.x - r.width; + } + // r.width = cm.getColumn(column).getWidth(); + } + return r; + } + + /** + * 获取Group的Y位置 + * + * @param group + * @return + */ + public int getYOfGroup(Group group) { + int row = group.getRow(); + TableCellRenderer renderer = this.getDefaultRenderer(); + Component comp = renderer.getTableCellRendererComponent(getTable(), group.getHeaderValue(), + false, false, group.getRow(), group.getColumn()); + return row * comp.getPreferredSize().height; + } + + /** + * 获取Group的高度 + * + * @param group + * @return + */ + public int getHeightOfGroup(Group group) { + int rowSpan = group.getRowSpan(); + TableCellRenderer renderer = this.getDefaultRenderer(); + Component comp = renderer.getTableCellRendererComponent(getTable(), group.getHeaderValue(), + false, false, group.getRow(), group.getColumn()); + return rowSpan * comp.getPreferredSize().height; + } + + private int getWidthInRightToLeft() { + if ((table != null) && (table.getAutoResizeMode() != JTable.AUTO_RESIZE_OFF)) { + return table.getWidth(); + } + return super.getWidth(); + } + + /** + * 增加Group + * + * @param group + */ + public void addGroup(Group group) { + groups.add(group); + int row = group.getRow(); + int rowSpan = group.getRowSpan(); + rowCount = Math.max(rowCount, row + rowSpan); + int column = group.getColumn(); + int columnSpan = group.getColumnSpan(); + columnCount = Math.max(columnCount, column + columnSpan); + } + + /** + * 移除所有Group + */ + public void removeAllGroups() { + groups.clear(); + } + + /** + * 获取所有的Group + * + * @return + */ + public List getGroups() { + List list = new ArrayList(); + list.addAll(groups); + return list; + } + + /** + * 获取指定列上的Group + * + * @param columnIndex + * @return + */ + public List getGroupsAtColumn(int columnIndex) { + List list = new ArrayList(); + for (Group group : groups) { + int minColumnIndex = group.getColumn(); + int maxColumnIndex = minColumnIndex + group.getColumnSpan() - 1; + if (minColumnIndex <= columnIndex && maxColumnIndex >= columnIndex) { + list.add(group); + } + } + return list; + } + + /** + * 获取指定行上的所有Group + * + * @param rowIndex + * @return + */ + public List getGroupsAtRow(int rowIndex) { + List list = new ArrayList(); + for (Group group : groups) { + int minRowIndex = group.getRow(); + int maxRowIndex = minRowIndex + group.getRowSpan() - 1; + if (minRowIndex <= rowIndex && maxRowIndex >= rowIndex) { + list.add(group); + } + } + return list; + } + + /** + * 获取行数 + * + * @return + */ + public int getRowCount() { + return this.rowCount; + } + + /** + * @return Returns the columnCount. + */ + public int getColumnCount() { + return this.columnCount; + } + + /* + * (非 Javadoc) + * + * @see javax.swing.table.JTableHeader#setTable(javax.swing.JTable) + */ + @Override + public void setTable(JTable table) { + super.setColumnModel(table.getColumnModel()); + super.setTable(table); + } + + /** + * 获取指定行列的Group + * + * @param row + * @param column + * @return + */ + public Group getGroup(int row, int column) { + for (Group group : groups) { + int rowIndex = group.getRow(); + int columnIndex = group.getColumn(); + int rowSpan = group.getRowSpan(); + int columnSpan = group.getColumnSpan(); + if (rowIndex <= row && rowIndex + rowSpan > row && columnIndex <= column + && columnIndex + columnSpan > column) + return group; + } + return null; + } + + /** + * (非 Javadoc) + * @see javax.swing.table.JTableHeader#createDefaultRenderer() + */ + @Override + protected TableCellRenderer createDefaultRenderer() { + return new TableHeaderRenderer(); + } +} + diff --git a/src/com/connnor/mdbksplm/table3/GroupableTableHeaderTest.java b/src/com/connnor/mdbksplm/table3/GroupableTableHeaderTest.java new file mode 100644 index 0000000..291755f --- /dev/null +++ b/src/com/connnor/mdbksplm/table3/GroupableTableHeaderTest.java @@ -0,0 +1,160 @@ +package com.connnor.mdbksplm.table3; + import java.awt.BorderLayout; + import java.awt.HeadlessException; + + import javax.swing.JFrame; + import javax.swing.JScrollPane; + import javax.swing.JTable; + import javax.swing.table.DefaultTableModel; + + /** + * 合并列头测试 + * + * @author Brad.Wu + * @version 1.0 + */ +@SuppressWarnings( " serial " ) + public class GroupableTableHeaderTest extends JFrame { + + /** + * @param args + */ + public static void main(String[] args) { + GroupableTableHeaderTest test = new GroupableTableHeaderTest(); + test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + test.setSize(800, 600); + test.setVisible(true); + } + + private DefaultTableModel tableModel = new DefaultTableModel() { + + /* + * (非 Javadoc) + * + * @see javax.swing.table.DefaultTableModel#getColumnCount() + */ + @Override + public int getColumnCount() { + return 6; + } + + /* + * (非 Javadoc) + * + * @see javax.swing.table.DefaultTableModel#getRowCount() + */ +// @Override +// public int getRowCount() { +// return 2; +// } + + }; + + private JTable table = new JTable(tableModel); + + private JScrollPane scroll = new JScrollPane(table); + + /** + * @throws HeadlessException + */ + public GroupableTableHeaderTest() throws HeadlessException { + table.setRowHeight(40); +// table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + table.getTableHeader().setReorderingAllowed(false); // 设置不可拖拽 + table.getColumnModel().getColumn(0).setPreferredWidth(120); + table.getColumnModel().getColumn(1).setPreferredWidth(120); + table.getColumnModel().getColumn(2).setPreferredWidth(120); + table.getColumnModel().getColumn(3).setPreferredWidth(120); + table.getColumnModel().getColumn(4).setPreferredWidth(120); + table.getColumnModel().getColumn(5).setPreferredWidth(120); +// table.getColumnModel().getColumn(6).setPreferredWidth(120); + + table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + GroupableTableHeader tableHeader = new GroupableTableHeader(); +// tableHeader.setSize(720,500); + table.setTableHeader(tableHeader); + DefaultTableModel model = (DefaultTableModel) table.getModel(); + String[] s = {"1","2","3","4","5","6"}; + model.addRow(s); + table.updateUI(); + + + DefaultGroup group = new DefaultGroup(); + group.setRow(0); + group.setRowSpan(1); + group.setColumn(0); + group.setHeaderValue("楼层"); + tableHeader.addGroup(group); + + group = new DefaultGroup(); + group.setRow(0); + group.setRowSpan(1); + group.setColumn(1); + group.setHeaderValue("水平/垂直系数"); + tableHeader.addGroup(group); + + group = new DefaultGroup(); + group.setRow(0); + group.setColumn(2); + group.setColumnSpan(2); + group.setHeaderValue("A & B"); + tableHeader.addGroup(group); + +// group = new DefaultGroup(); +// group.setRow(1); +// group.setColumn(2); +// group.setHeaderValue("Column A"); +// tableHeader.addGroup(group); +// +// group = new DefaultGroup(); +// group.setRow(2); +// group.setColumn(2); +// group.setHeaderValue("Column A1"); +// tableHeader.addGroup(group); +// +// group = new DefaultGroup(); +// group.setRow(1); +// group.setColumn(3); +// group.setHeaderValue("Column B"); +// tableHeader.addGroup(group); +// +// group = new DefaultGroup(); +// group.setRow(2); +// group.setColumn(3); +// group.setHeaderValue("Column B1"); +// tableHeader.addGroup(group); + + group = new DefaultGroup(); + group.setRow(0); + group.setColumn(4); + group.setColumnSpan(2); + group.setHeaderValue("C & D"); + tableHeader.addGroup(group); + +// group = new DefaultGroup(); +// group.setRow(1); +// group.setColumn(4); +// group.setHeaderValue("Column C"); +// tableHeader.addGroup(group); +// +// group = new DefaultGroup(); +// group.setRow(2); +// group.setColumn(4); +// group.setHeaderValue("Column C1"); +// tableHeader.addGroup(group); +// +// group = new DefaultGroup(); +// group.setRow(1); +// group.setColumn(5); +// group.setHeaderValue("Column D"); +// tableHeader.addGroup(group); +// +// group = new DefaultGroup(); +// group.setRow(2); +// group.setColumn(5); +// group.setHeaderValue("Column D"); +// tableHeader.addGroup(group); + + getContentPane().add(scroll, BorderLayout.CENTER); + } +} diff --git a/src/com/connnor/mdbksplm/table3/GroupableTableHeaderUI.java b/src/com/connnor/mdbksplm/table3/GroupableTableHeaderUI.java new file mode 100644 index 0000000..a98b4ae --- /dev/null +++ b/src/com/connnor/mdbksplm/table3/GroupableTableHeaderUI.java @@ -0,0 +1,220 @@ +package com.connnor.mdbksplm.table3; +import java.awt.Component; + import java.awt.Dimension; + import java.awt.Graphics; + import java.awt.Point; + import java.awt.Rectangle; + import java.util.Enumeration; + import java.util.List; + + import javax.swing.JComponent; + import javax.swing.plaf.basic.BasicTableHeaderUI; + import javax.swing.table.TableCellRenderer; + import javax.swing.table.TableColumn; + import javax.swing.table.TableColumnModel; + + /** + * 可合并列头UI + * + * @author Brad.Wu + * @version 1.0 + */ + public class GroupableTableHeaderUI extends BasicTableHeaderUI { + + /* + * (非 Javadoc) + * + * @see javax.swing.plaf.basic.BasicTableHeaderUI#paint(java.awt.Graphics, + * javax.swing.JComponent) + */ + @Override + public void paint(Graphics g, JComponent c) { + if (header.getColumnModel().getColumnCount() <= 0) { + return; + } + boolean ltr = header.getComponentOrientation().isLeftToRight(); + + Rectangle clip = g.getClipBounds(); + Point left = clip.getLocation(); + Point right = new Point(clip.x + clip.width - 1, clip.y); + TableColumnModel cm = header.getColumnModel(); + int cMin = header.columnAtPoint(ltr ? left : right); + int cMax = header.columnAtPoint(ltr ? right : left); + // This should never happen. + if (cMin == -1) { + cMin = 0; + } + // If the table does not have enough columns to fill the view we'll get -1. + // Replace this with the index of the last column. + if (cMax == -1) { + cMax = cm.getColumnCount() - 1; + } + + // TableColumn draggedColumn = header.getDraggedColumn(); + int columnWidth; + // Rectangle cellRect = header.getHeaderRect(ltr ? cMin : cMax); + TableColumn aColumn; + // if (ltr) { + // for (int column = cMin; column <= cMax; column++) { + // aColumn = cm.getColumn(column); + // columnWidth = aColumn.getWidth(); + // cellRect.width = columnWidth; + // // if (aColumn != draggedColumn) { + // paintCell(g, cellRect, column); + // // } + // cellRect.x += columnWidth; + // } + // } else { + // for (int column = cMax; column >= cMin; column--) { + // aColumn = cm.getColumn(column); + // columnWidth = aColumn.getWidth(); + // cellRect.width = columnWidth; + // // if (aColumn != draggedColumn) { + // paintCell(g, cellRect, column); + // // } + // cellRect.x += columnWidth; + // } + // } + GroupableTableHeader gHeader = (GroupableTableHeader) header; + for (int row = 0, rowCount = gHeader.getRowCount(); row < rowCount; row++) { + Rectangle cellRect = gHeader.getHeaderRect(row, ltr ? cMin : cMax); + if (ltr) { + for (int column = cMin; column <= cMax; column++) { + Group group = gHeader.getGroup(row, column); + cellRect.width = 0; + for (int from = group.getColumn(), to = from + group.getColumnSpan() - 1; from <= to; from++) { + aColumn = cm.getColumn(from); + columnWidth = aColumn.getWidth(); + cellRect.width += columnWidth; + } + cellRect.y = gHeader.getYOfGroup(group); + cellRect.height = gHeader.getHeightOfGroup(group); + paintCell(g, cellRect, row, column); + cellRect.x += cellRect.width; + column += group.getColumnSpan() - 1; + } + } else { + for (int column = cMax; column >= cMin; column--) { + Group group = gHeader.getGroup(row, column); + cellRect.width = 0; + for (int from = group.getColumn(), to = from + group.getColumnSpan() - 1; from <= to; from++) { + aColumn = cm.getColumn(from); + columnWidth = aColumn.getWidth(); + cellRect.width += columnWidth; + } + paintCell(g, cellRect, row, column); + cellRect.x += cellRect.width; + column -= group.getColumnSpan() - 1; + } + } + } + // Remove all components in the rendererPane. + rendererPane.removeAll(); + } + + /** + * 描画指定行列 + * + * @param g + * @param cellRect + * @param rowIndex + * @param columnIndex + */ + private void paintCell(Graphics g, Rectangle cellRect, int rowIndex, int columnIndex) { + Component component = getHeaderRenderer(rowIndex, columnIndex); + rendererPane.paintComponent(g, component, header, cellRect.x, cellRect.y, cellRect.width, + cellRect.height, true); + } + + /** + * 获取指定行列的描述组件 + * + * @param rowIndex + * @param columnIndex + * @return + */ + private Component getHeaderRenderer(int rowIndex, int columnIndex) { + GroupableTableHeader gHeader = (GroupableTableHeader) header; + Group group = gHeader.getGroup(rowIndex, columnIndex); + TableCellRenderer renderer = header.getDefaultRenderer(); + return renderer.getTableCellRendererComponent(header.getTable(), group.getHeaderValue(), + false, false, -1, columnIndex); + } + + /** + * 获取列头的高度 + * + * @return + */ + private int getHeaderHeight() { + int height = 0; + int tempHeight = 0; + GroupableTableHeader gHeader = (GroupableTableHeader) header; + TableColumnModel cm = header.getColumnModel(); + for (int column = 0, columnCount = cm.getColumnCount(); column < columnCount; column++) { + tempHeight = 0; + List groups = gHeader.getGroupsAtColumn(column); + for (Group group : groups) { + TableCellRenderer renderer = gHeader.getDefaultRenderer(); + Component comp = renderer.getTableCellRendererComponent(header.getTable(), group + .getHeaderValue(), false, false, -1, column); + int rendererHeight = comp.getPreferredSize().height; + tempHeight += rendererHeight; + } + height = Math.max(height, tempHeight); + } + return height; + } + + private Dimension createHeaderSize(long width) { + // TableColumnModel columnModel = header.getColumnModel(); + // None of the callers include the intercell spacing, do it here. + if (width > Integer.MAX_VALUE) { + width = Integer.MAX_VALUE; + } + return new Dimension((int) width, getHeaderHeight()); + } + + /** + * Return the minimum size of the header. The minimum width is the sum of the minimum widths of + * each column (plus inter-cell spacing). + */ + public Dimension getMinimumSize(JComponent c) { + long width = 0; + Enumeration enumeration = header.getColumnModel().getColumns(); + while (enumeration.hasMoreElements()) { + TableColumn aColumn = (TableColumn) enumeration.nextElement(); + width = width + aColumn.getMinWidth(); + } + return createHeaderSize(width); + } + + /** + * Return the preferred size of the header. The preferred height is the maximum of the preferred + * heights of all of the components provided by the header renderers. The preferred width is the + * sum of the preferred widths of each column (plus inter-cell spacing). + */ + public Dimension getPreferredSize(JComponent c) { + long width = 0; + Enumeration enumeration = header.getColumnModel().getColumns(); + while (enumeration.hasMoreElements()) { + TableColumn aColumn = (TableColumn) enumeration.nextElement(); + width = width + aColumn.getPreferredWidth(); + } + return createHeaderSize(width); + } + + /** + * Return the maximum size of the header. The maximum width is the sum of the maximum widths of + * each column (plus inter-cell spacing). + */ + public Dimension getMaximumSize(JComponent c) { + long width = 0; + Enumeration enumeration = header.getColumnModel().getColumns(); + while (enumeration.hasMoreElements()) { + TableColumn aColumn = (TableColumn) enumeration.nextElement(); + width = width + aColumn.getMaxWidth(); + } + return createHeaderSize(width); + } +} diff --git a/src/com/connnor/mdbksplm/table3/TableCellTextAreaRenderer.java b/src/com/connnor/mdbksplm/table3/TableCellTextAreaRenderer.java new file mode 100644 index 0000000..4bf8833 --- /dev/null +++ b/src/com/connnor/mdbksplm/table3/TableCellTextAreaRenderer.java @@ -0,0 +1,71 @@ +package com.connnor.mdbksplm.table3; + +import java.awt.Color; +import java.awt.Component; + +import javax.swing.JTable; +import javax.swing.JTextArea; +import javax.swing.table.TableCellRenderer; + +public class TableCellTextAreaRenderer extends JTextArea implements TableCellRenderer { + public TableCellTextAreaRenderer() { + setLineWrap(true); + setWrapStyleWord(true); + + } + + @Override + public Component getTableCellRendererComponent(JTable table, Object value, + boolean isSelected, boolean hasFocus, int row, int column) { + // TODO Auto-generated method stub + int maxPreferredHeight = 0; + for (int i = 0; i < table.getColumnCount(); i++) { + setText("" + table.getValueAt(row, i)); + setSize(table.getColumnModel().getColumn(column).getWidth(), 0); + maxPreferredHeight = Math.max(maxPreferredHeight, getPreferredSize().height); + } + setBackground(Color.white); + setForeground(Color.black); + if(isSelected){ + setBackground(new Color(0, 120, 215)); + setForeground(Color.white); + } + if (table.getRowHeight(row) != maxPreferredHeight) // 少了这行则处理器瞎忙 + table.setRowHeight(row, maxPreferredHeight); + + setText(value == null ? "" : value.toString()); + return this; + } + +// @Override +// public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, +// int row, int column) { +// // TODO Auto-generated method stub +// int maxPreferredHeight = 0; +// for (int i = 0; i < table.getColumnCount(); i++) { +// setText("" + table.getValueAt(row, i)); +// setSize(table.getColumnModel().getColumn(column).getWidth(), 0); +// maxPreferredHeight = Math.max(maxPreferredHeight, getPreferredSize().height); +// } +// setBorder(BorderFactory.createLineBorder(Color.white)); +// setBackground(Color.white); +// setForeground(Color.black); +// if(isSelected){ +// setBackground(new Color(0, 120, 215)); +// setForeground(Color.white); +// } +// String val=(String) table.getValueAt(row, column); +// int w=0; +// if(val!=null){ +// w=val.length()*6/table.getColumn(table.getColumnName(column)).getWidth(); +// } +// if(w!=0){ +// //System.out.println("height:"+table.getRowHeight()*(w+1)); +// table.setRowHeight(row,table.getRowHeight()*(w+1)); +// } +// +// +// setText(value == null ? "" : value.toString()); +// return this; +// } +} \ No newline at end of file diff --git a/src/com/connnor/mdbksplm/table3/TableHeaderRenderer.java b/src/com/connnor/mdbksplm/table3/TableHeaderRenderer.java new file mode 100644 index 0000000..5d8634a --- /dev/null +++ b/src/com/connnor/mdbksplm/table3/TableHeaderRenderer.java @@ -0,0 +1,182 @@ +package com.connnor.mdbksplm.table3; +import java.awt.Color; + import java.awt.Component; + import java.awt.Dimension; +import java.awt.Label; +import java.awt.Rectangle; + import java.io.Serializable; + + import javax.swing.JLabel; + import javax.swing.JTable; + import javax.swing.UIManager; + import javax.swing.table.DefaultTableCellRenderer; + import javax.swing.table.JTableHeader; + import javax.swing.table.TableCellRenderer; + + + /** + * Created at 2006-9-5 16:02:46
+ * 表头描述器 + * + * @author Brad.Wu + * @version 1.0 + */ +@SuppressWarnings( " serial " ) + public class TableHeaderRenderer extends DefaultTableCellRenderer implements TableCellRenderer, Serializable { + /** + * Creates a default table cell renderer. + */ + public TableHeaderRenderer() { + setOpaque(true); + setHorizontalAlignment(JLabel.CENTER); + } + + // implements javax.swing.table.TableCellRenderer + /** + * Returns the default table cell renderer. + * + * @param table the JTable + * @param value the value to assign to the cell at [row, column] + * @param isSelected true if cell is selected + * @param hasFocus true if cell has focus + * @param row the row of the cell to render + * @param column the column of the cell to render + * @return the default table cell renderer + */ + public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, + boolean hasFocus, int row, int column) { + + if (table != null) { + JTableHeader header = table.getTableHeader(); + if (header != null) { + setForeground(header.getForeground()); + setBackground(header.getBackground()); + setFont(header.getFont()); + } + } + + setBorder(UIManager.getBorder("TableHeader.cellBorder")); + + setValue(value); + + Dimension dim = getPreferredSize(); + if (dim.height < 20)//Constants.TABLE_ROW_HEIGHT + setPreferredSize(new Dimension(getPreferredSize().width, 20)); + return this; + } + + /* + * The following methods are overridden as a performance measure to to prune code-paths are + * often called in the case of renders but which we know are unnecessary. Great care should be + * taken when writing your own renderer to weigh the benefits and drawbacks of overriding + * methods like these. + */ + + /** + * Overridden for performance reasons. See the Implementation Note for + * more information. + */ + public boolean isOpaque() { + Color back = getBackground(); + Component p = getParent(); + if (p != null) { + p = p.getParent(); + } + // p should now be the JTable. + boolean colorMatch = (back != null) && (p != null) && back.equals(p.getBackground()) + && p.isOpaque(); + return !colorMatch && super.isOpaque(); + } + + /** + * Overridden for performance reasons. See the Implementation Note for + * more information. + * + * @since 1.5 + */ + public void invalidate() { + } + + /** + * Overridden for performance reasons. See the Implementation Note for + * more information. + */ + public void validate() { + } + + /** + * Overridden for performance reasons. See the Implementation Note for + * more information. + */ + public void revalidate() { + } + + /** + * Overridden for performance reasons. See the Implementation Note for + * more information. + */ + public void repaint(long tm, int x, int y, int width, int height) { + } + + /** + * Overridden for performance reasons. See the Implementation Note for + * more information. + */ + public void repaint(Rectangle r) { + } + + /** + * Overridden for performance reasons. See the Implementation Note for + * more information. + * + * @since 1.5 + */ + public void repaint() { + } + + /** + * Overridden for performance reasons. See the Implementation Note for + * more information. + */ + protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) { + // Strings get interned... + if (propertyName == "text") { + super.firePropertyChange(propertyName, oldValue, newValue); + } + } + + /** + * Overridden for performance reasons. See the Implementation Note for + * more information. + */ + public void firePropertyChange(String propertyName, boolean oldValue, boolean newValue) { + } + + /** + * Sets the String object for the cell being rendered to value. + * + * @param value the string value for this cell; if value is null it sets the text + * value to an empty string + * @see JLabel#setText + */ + protected void setValue(Object value) { + setText((value == null) ? "" : value.toString()); + } + + /** + * A subclass of DefaultTableCellRenderer that implements UIResource. + * DefaultTableCellRenderer doesn't implement UIResource directly + * so that applications can safely override the cellRenderer property with + * DefaultTableCellRenderer subclasses. + *

+ * Warning: Serialized objects of this class will not be compatible with + * future Swing releases. The current serialization support is appropriate for short term + * storage or RMI between applications running the same version of Swing. As of 1.4, support for + * long term storage of all JavaBeansTM has been added to + * the java.beans package. Please see {@link java.beans.XMLEncoder}. + */ + public static class UIResource extends DefaultTableCellRenderer implements + javax.swing.plaf.UIResource { + } + +} \ No newline at end of file diff --git a/src/com/connor/mdbksplm/ProblemReport/ProblemReportFrame.java b/src/com/connor/mdbksplm/ProblemReport/ProblemReportFrame.java new file mode 100644 index 0000000..bfe382a --- /dev/null +++ b/src/com/connor/mdbksplm/ProblemReport/ProblemReportFrame.java @@ -0,0 +1,795 @@ +package com.connor.mdbksplm.ProblemReport; + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.awt.Font; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +import javax.swing.JButton; +import javax.swing.JComboBox; +import javax.swing.JFileChooser; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JMenuItem; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JPopupMenu; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.JTextField; +import javax.swing.filechooser.FileSystemView; +import javax.swing.table.DefaultTableCellRenderer; +import javax.swing.table.DefaultTableModel; +import javax.swing.table.JTableHeader; + +import org.apache.poi.ss.usermodel.CellStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.apache.poi.ss.util.CellRangeAddress; +import org.apache.poi.xssf.usermodel.XSSFCell; +import org.apache.poi.xssf.usermodel.XSSFRow; +import org.apache.poi.xssf.usermodel.XSSFSheet; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; + +import com.connor.mdbksplm.treamlist.CNProperty; +import com.connor.mdbksplm.util.ProgressBarDemo; +import com.connor.mdbksplm.util.WaitingDialog; +import com.teamcenter.rac.aif.AbstractAIFCommand; +import com.teamcenter.rac.aif.AbstractAIFUIApplication; +import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent; +import com.teamcenter.rac.aifrcp.AIFUtility; +import com.teamcenter.rac.commands.open.OpenCommand; +import com.teamcenter.rac.kernel.TCAccessControlService; +import com.teamcenter.rac.kernel.TCComponent; +import com.teamcenter.rac.kernel.TCComponentItem; +import com.teamcenter.rac.kernel.TCComponentItemRevision; +import com.teamcenter.rac.kernel.TCComponentProject; +import com.teamcenter.rac.kernel.TCComponentUser; +import com.teamcenter.rac.kernel.TCException; +import com.teamcenter.rac.kernel.TCPreferenceService; +import com.teamcenter.rac.kernel.TCSession; +import com.teamcenter.rac.kernel.TCUserService; +import com.teamcenter.rac.util.DateButton; +import com.teamcenter.rac.util.MessageBox; +import com.teamcenter.rac.util.PropertyLayout; + +public class ProblemReportFrame extends JFrame{ + private static final long serialVersionUID = 1L; + private TCSession session; + private AbstractAIFUIApplication app; + protected TCUserService userService; + + private JPanel leftPanel = new JPanel(new BorderLayout()); + private JButton okButton; + private JButton exButton; + + private String SearchName = null; + // string:问题来源:prosource + // date:创建日期: creation_date01| creation_date02 + private List> searchList = new ArrayList<>(); + + // 问题来源:Form.mt8_prosource:15 + private List> colList = new ArrayList<>(); + + private Integer cur = new Integer(0); + + HashMap fMap = new HashMap<>(); + HashMap dMap = new HashMap<>(); + HashMap, String> boxMap = new HashMap<>(); + + List> allSj = new ArrayList<>(); + private Integer num = new Integer(0); + + // 序号:问题报告 + HashMap baogao = new HashMap<>(); + + private SimpleDateFormat formatter= new SimpleDateFormat("dd-M 月-yyyy"); + private SimpleDateFormat formatter2= new SimpleDateFormat("yyyy-MM-dd"); + + private String[] columns; + +// ProgressBarDemo wait = new ProgressBarDemo(); + private WaitingDialog waiting; + + public ProblemReportFrame(AbstractAIFUIApplication app) { +// super(false); + this.app = app; + this.session = (TCSession) app.getSession(); + } + + public void initUI() { + FindData(); + this.setTitle("问题报告看板"); + this.setPreferredSize(new Dimension(1500, 600)); + this.setLayout(new BorderLayout()); + + Font font = new Font("宋体", Font.PLAIN, 12);//创建1个字体实例 + Font font2 = new Font("宋体", Font.PLAIN, 10);//创建1个字体实例 + + JPanel leftTJPanel = new JPanel(new PropertyLayout(2,10,5,20,5,5)); + cur = 0; + for(int i=0;i list = searchList.get(i); + if("string".equals(list.get(0))) { // 是String类型控件 + cur++; + JLabel label = new JLabel(list.get(1)); //控件名称 + label.setPreferredSize(new Dimension(100, 22)); + label.setFont(font); + leftTJPanel.add(cur + ".1.left",label); + + cur++; + if(list.size() > 3) { + JComboBox field = new JComboBox(); + field.setPreferredSize(new Dimension(140, 22)); + field.setFont(font); + CNProperty cn1 = new CNProperty(); + cn1.setLovName(list.get(3)); + cn1.initProperty(); + field.addItem(" "); + for(int k=0;k columnsList = new ArrayList<>(); + for(int i=0; i 2) { // 大于2,代表get(3)为列宽 + Integer valueOf = Integer.valueOf(colList.get(i).get(2)); + createTable.getColumnModel().getColumn(i+1).setPreferredWidth(valueOf); + System.out.println("给第" + (i+2) + "列设置初始列宽:" + valueOf); + } + } + createTable.getColumnModel().getColumn(createTable.getColumnCount()-2).setPreferredWidth(10); + createTable.getColumnModel().getColumn(createTable.getColumnCount()-1).setPreferredWidth(10); + + doubleAdd(createTable); + + // 添加表头点击事件监听器 + JTableHeader header = createTable.getTableHeader(); + header.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + int column = createTable.columnAtPoint(e.getPoint()); + System.out.println("Clicked column header " + (column + 1)); + allSj = sortByIndexAndUpdateMap(allSj,(column + 1),null,baogao); + clearTable(createTable); + createTable.updateUI(); + num = 0; + DefaultTableModel m = (DefaultTableModel) createTable.getModel(); + for(List list : allSj) { + m.addRow(list.toArray()); + } + setTableCellBackgroundByLastColumn(createTable); + createTable.updateUI(); + } + + }); + + JScrollPane scrollRight = new JScrollPane(createTable); + scrollRight.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); //设置水平滚动条需要时可见 + scrollRight.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); //设置竖向滚动条需要时可见 + + JPanel endP = new JPanel(new BorderLayout()); + endP.add(scroll, BorderLayout.WEST); + endP.add(scrollRight, BorderLayout.CENTER); + + this.setLayout(new BorderLayout()); +// this.add(scroll, BorderLayout.WEST); + this.add(endP, BorderLayout.CENTER); + this.add(buttonPanel, BorderLayout.SOUTH); + this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); + this.pack(); + this.setResizable(true); + this.setLocationRelativeTo(null); +// this.setExtendedState(JFrame.MAXIMIZED_BOTH); + this.setExtendedState(JFrame.NORMAL); +// this.setUndecorated(false); + this.setVisible(true); + + okButton.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + +// wait.showProgressBar();// 开启进度条 +// waiting = new WaitingDialog(AIFUtility.getCurrentApplication().getDesktop(), "等待提示", "正在加载,请稍侯 ..."); + waiting = new WaitingDialog(null,"等待提示", "正在加载,请稍侯 ..."); + waiting.SetDialogMessage("正在加载,请稍侯 ..."); + waiting.setVisible(true);// 开启进度条 + + List textList = new ArrayList<>(); + List tjList = new ArrayList<>(); + fMap.forEach((k,v) -> { + if(k != null && !"".equals(k.getText())) { + textList.add(k.getText()); + tjList.add(v); + } + }); + boxMap.forEach((k,v) -> { + if(k != null && !"".equals(k.getSelectedItem().toString()) && + !" ".equals(k.getSelectedItem().toString())) { + textList.add(k.getSelectedItem().toString()); + tjList.add(v); + } + }); + dMap.forEach((k,v) -> { + if(k != null && k.getDate() != null) { + textList.add(formatter.format(k.getDate())); + tjList.add(v); + } + }); + System.out.println("查询名称:" + SearchName); + if(tjList == null || tjList.size() == 0) { + tjList.add("id01"); + textList.add("*"); + } else { + for(int i=0; i(); + for(int i=0; i 0) { + project = proList[0]; + } + TCComponent form = referenceListProperty[0]; // 版本表单 + TCComponentItem item = rev.getItem(); // 版本父对象 + //colList + List sj = new ArrayList<>(); + num ++; + sj.add(num.toString()); + for(int j=0; j 1) { + String dx = split[0]; // 属性在什么对象上面 + String shux = split[1]; // 属性真实名称 + if("Item".equals(dx)) { + String property = item.getProperty(shux); + try { + Date dateProperty = item.getDateProperty(shux); + if(dateProperty != null) { + property = formatter2.format(dateProperty); + } + } catch(Exception eee) { + } + sj.add(property == null ? "" : property); + } else if("Rev".equals(dx)) { + String property = rev.getProperty(shux); + try { + Date dateProperty = rev.getDateProperty(shux); + if(dateProperty != null) { + property = formatter2.format(dateProperty); + } + } catch(Exception eee) { + } + sj.add(property == null ? "" : property); + } else if("Form".equals(dx)) { + String property = form.getProperty(shux); + try { + Date dateProperty = form.getDateProperty(shux); + if(dateProperty != null) { + property = formatter2.format(dateProperty); + } + } catch(Exception eee) { +// try { +// TCComponent relatedComponent = form.getRelatedComponent(shux); +// if(relatedComponent != null) { +// property = relatedComponent.toString(); +// } +// } catch (Exception ee) { +// +// } + } + sj.add(property == null ? "" : property); + } else if("Proj".equals(dx)) { + if(project == null) { + sj.add(""); + } else { + String property = project.getProperty(shux); + try { + Date dateProperty = project.getDateProperty(shux); + if(dateProperty != null) { + property = formatter2.format(dateProperty); + } + } catch(Exception eee) { + } + sj.add(property == null ? "" : property); + } + } else { + sj.add(""); + } + } + } + // 最后两列固定列:状态,备注 + if(form == null) { + sj.add(""); + } else { + Date dateProperty = form.getDateProperty("mt8_plancomptime"); // 计划完成时间 + Date dateProperty2 = form.getDateProperty("mt8_actualcomptime"); // 实际完成时间 + //延期完成(实际完成时间晚于计划完成时间)、 + //按时完成(实际完成时间等于计划完成时间)、 + //提前完成(实际完成时间早于计划完成时间)、 + //延期(实际完成时间为空,且当前日期已晚于计划完成时间)、 + //进行中(实际完成时间为空,且当前日期早于计划完成时间) + if(dateProperty2 != null) { + if(dateProperty2.after(dateProperty)){ + int days = daysBetweenDates(dateProperty2, dateProperty); + sj.add("延期" + (days+1) + "天完成"); + } else if(dateProperty2.before(dateProperty)){ + int days = daysBetweenDates(dateProperty2, dateProperty); + sj.add("提前" + (days+1) + "天完成"); + } else { + sj.add("按期完成"); + } + } else { + if(dateProperty != null && (new Date()).after(dateProperty)) { + int days = daysBetweenDates(dateProperty, new Date()); + sj.add("延期" + (days+1) + "天"); + } else { + sj.add("进行中"); + } + } +// if(dateProperty == null) { +// sj.add("进行中"); +// } else { +// if(dateProperty2 == null && (new Date()).after(dateProperty)) { +// int days = daysBetweenDates(dateProperty, new Date()); +// sj.add("延期" + days + "天"); +// } else if(dateProperty2 == null && !(new Date()).after(dateProperty)) { +// sj.add("进行中"); +// } else if(dateProperty2.before(dateProperty)) { +// int days = daysBetweenDates(dateProperty2, dateProperty); +// sj.add("提前" + days + "天完成"); +// } else if(dateProperty2.after(dateProperty)) { +// int days = daysBetweenDates(dateProperty2, dateProperty); +// sj.add("延期" + days + "天完成"); +// } else { +// sj.add("按期完成"); +// } +// } + } + sj.add(""); // 备注 + baogao.put(num.toString(), item); + allSj.add(sj); + } + clearTable(createTable); + DefaultTableModel m = (DefaultTableModel) createTable.getModel(); + for(int i=0; i0) { + SearchName = strs[0]; + System.out.println("查询名称:" + SearchName); + + + for(int i=1; i list = new ArrayList<>(); + String[] split = strs[i].split(":"); + if(split != null && split.length > 2) { + list.add(split[0]); // 控件的属性类型 + list.add(split[1]); // 控件的名字 + String[] split2 = split[2].split("\\|"); + if(split2 != null && split2.length > 1) { + list.add(split2[0]); // 控件是日期,则添加两个查询条件 + list.add(split2[1]); + } else { + list.add(split[2]); // 控件是String,添加一个查询条件 + if(split.length > 3) { + list.add(split[3]); // 控件是String并且是LOV + } + } + } + searchList.add(list); + } + } + + strs = preferenceService.getStringValues("CONNOR_PRDashBoard_ShowConfig"); + if(strs != null && strs.length >0) { + for(int i=0; i list = new ArrayList<>(); + String[] split = strs[i].split(":"); + if(split != null && split.length > 0) { + for(int j=0; j 0) { + model.removeRow(0); + } + } + + public void exportData() { + // TODO Auto-generated method stub + exButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + // 弹出文件选择框 + JFileChooser jfc = new JFileChooser(FileSystemView.getFileSystemView().getHomeDirectory()); + jfc.setDialogTitle("Choose a directory to export the file"); + jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); + int returnValue = jfc.showSaveDialog(null); + if (returnValue == JFileChooser.APPROVE_OPTION) { + File selectedDirectory = jfc.getSelectedFile(); + // 导出数据到Excel + try { + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); + String format = df.format(new Date()); + String fw = selectedDirectory.getAbsolutePath() + "/问题报告看板-" + format + ".xlsx"; + writeExcel(fw, allSj); + JOptionPane.showMessageDialog(null, "导出成功!"); + } catch (IOException ex) { + ex.printStackTrace(); + } + } + } + }); + } + + // 生成excel + public void writeExcel(String filePath, List> data) throws IOException { + // 创建一个工作簿对象 + XSSFWorkbook workbook = new XSSFWorkbook(); + // 创建一个工作表对象 + XSSFSheet sheet = workbook.createSheet(); + // 创建第一行,写表头 + XSSFRow rowHeader = sheet.createRow(0); + // 创建表头单元格对象 + XSSFCell headerCell = rowHeader.createCell(0); + // 设置表头单元格的值 + + // 创建一个单元格合并区域对象,将第一行第一列和第一行最后一列合并 + CellRangeAddress region = new CellRangeAddress(0, 0, 0, data.get(0).size() - 1); + // 使用addMergedRegion方法将单元格合并区域应用到工作表中 + sheet.addMergedRegion(region); +// // 设置表头单元格样式 + CellStyle style = workbook.createCellStyle(); + style.setAlignment(HorizontalAlignment.CENTER); + headerCell.setCellStyle(style); + headerCell.setCellValue("问题看板"); + // 写标题 + XSSFRow rowNext = sheet.createRow(1); + for(int i=0; i rowData = data.get(i); + // 遍历当前行数据,将数据写入到行中 + for (int j = 0; j < rowData.size(); j++) { + // 创建一个单元格对象 + XSSFCell cell = row.createCell(j); + // 设置单元格的值 + cell.setCellValue(rowData.get(j)); + } + } + // 创建一个文件输出流对象 + FileOutputStream outputStream = new FileOutputStream(filePath); + // 将工作簿写入到文件输出流中 + workbook.write(outputStream); + // 关闭文件输出流 + outputStream.close(); + } + + // 添加双击事件 + public void doubleAdd(JTable table) { + table.addMouseListener(new MouseAdapter() { + @Override + public void mousePressed(MouseEvent e) { + // TODO Auto-generated method stub + if (e.getClickCount() == 2) { + System.out.println("双击表格"); + int row = table.rowAtPoint(e.getPoint()); + String valueAt = (String)table.getValueAt(row, 0); + TCComponent tcComponent = baogao.get(valueAt); + openForm(tcComponent); + } + return; + } + }); + } + + // 打开对象 + private void openForm(TCComponent form) { +// try{ +// boolean modifiable = false; +// TCComponentUser currentUser = session.getUser(); +// String zuzhi = currentUser.getLoginGroup().toString(); +// System.out.println("currentUser:" + currentUser.toString()); +// System.out.println("zuzhi:" + zuzhi); +// // owning_group +// TCComponent[] members = form.getRelatedComponents("owning_group"); +// if(members!=null && members.length>0) { +// System.out.println("组织数组不为空"); +// for(int i=0;i 0 ? num : -num; + } + + // 排序并重新关联 + public List> sortByIndexAndUpdateMap(List> data, int index, + HashMap map, HashMap map2) { + System.out.println("重新排序"); + HashMap newMap = new HashMap(); + HashMap newMap2 = new HashMap(); + + List> sortedList = new ArrayList<>(data); + // 冒泡排序 + if(sortedList.get(0).get(index-1).compareTo(sortedList.get(sortedList.size() -1 ).get(index-1)) < 0) { + System.out.println("从大到小"); + for (int i = 0; i < sortedList.size() - 1; i++) { + for (int j = 0; j < sortedList.size() - 1 - i; j++) { + List list1 = sortedList.get(j); + List list2 = sortedList.get(j + 1); + if (list1.get(index-1).compareTo(list2.get(index-1)) < 0) { + // list1的第i个元素小于list2的第i个元素,交换位置 + sortedList.set(j, list2); + sortedList.set(j + 1, list1); + } + } + } + } else { + System.out.println("从小到大"); + for (int i = 0; i < sortedList.size() - 1; i++) { + for (int j = 0; j < sortedList.size() - 1 - i; j++) { + List list1 = sortedList.get(j); + List list2 = sortedList.get(j + 1); + if (list1.get(index-1).compareTo(list2.get(index-1)) > 0) { + // list1的第i个元素小于list2的第i个元素,交换位置 + sortedList.set(j, list2); + sortedList.set(j + 1, list1); + } + } + } + } + + // 遍历List>,更新每个List的第一个元素,并更新map中的数据 + for (int i = 0; i < sortedList.size(); i++) { + List list = sortedList.get(i); + String oldIndex = list.get(0); + String newIndex = String.valueOf(i + 1); +// // 更新List的序号 +// list.set(0, newIndex); + // 获取原来关联的TCComponent对象 + TCComponent comp = map2.get(oldIndex); + // 将TCComponent对象关联到新的序号上 + map2.remove(oldIndex); + newMap2.put(newIndex, comp); + } + + baogao = newMap2; + + // 遍历List>,更新每个List的第一个元素 + for (int i = 0; i < sortedList.size(); i++) { + List list = sortedList.get(i); + list.set(0, String.valueOf(i + 1)); + } + + System.out.println("排序完成"); + return sortedList; + } +} diff --git a/src/com/connor/mdbksplm/ProblemReport/ProblemReportHandler.java b/src/com/connor/mdbksplm/ProblemReport/ProblemReportHandler.java new file mode 100644 index 0000000..48e864f --- /dev/null +++ b/src/com/connor/mdbksplm/ProblemReport/ProblemReportHandler.java @@ -0,0 +1,19 @@ +package com.connor.mdbksplm.ProblemReport; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import com.teamcenter.rac.aif.AbstractAIFUIApplication; +import com.teamcenter.rac.aifrcp.AIFUtility; + +public class ProblemReportHandler extends AbstractHandler{ + + @Override + public Object execute(ExecutionEvent arg0) throws ExecutionException { + System.out.println("开始创建界面"); + AbstractAIFUIApplication app = AIFUtility.getCurrentApplication(); + ProblemReportFrame dialog = new ProblemReportFrame(app); + dialog.initUI(); + return null; + } +} \ No newline at end of file diff --git a/src/com/connor/mdbksplm/ProjectTasks/ProjectTasksDialog.java b/src/com/connor/mdbksplm/ProjectTasks/ProjectTasksDialog.java new file mode 100644 index 0000000..6cd1c31 --- /dev/null +++ b/src/com/connor/mdbksplm/ProjectTasks/ProjectTasksDialog.java @@ -0,0 +1,1359 @@ +package com.connor.mdbksplm.ProjectTasks; + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.swing.ButtonGroup; +import javax.swing.JButton; +import javax.swing.JComponent; +import javax.swing.JFileChooser; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JMenuItem; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JPopupMenu; +import javax.swing.JProgressBar; +import javax.swing.JRadioButton; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.JTextField; +import javax.swing.filechooser.FileSystemView; +import javax.swing.table.DefaultTableCellRenderer; +import javax.swing.table.DefaultTableModel; +import javax.swing.table.JTableHeader; +import javax.swing.table.TableCellRenderer; + +import org.apache.poi.ss.usermodel.CellStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.apache.poi.ss.util.CellRangeAddress; +import org.apache.poi.xssf.usermodel.XSSFCell; +import org.apache.poi.xssf.usermodel.XSSFRow; +import org.apache.poi.xssf.usermodel.XSSFSheet; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.jdesktop.swingx.JXDatePicker; + + +import com.connor.mdbksplm.util.ConnorUtils; +import com.connor.mdbksplm.util.ProgressBarDemo; +import com.connor.mdbksplm.util.ProgressBarThread; +import com.connor.mdbksplm.util.WaitingDialog; +import com.connor.mdbksplm.util.BusyLabelDemo; +import com.teamcenter.rac.aif.AbstractAIFCommand; +import com.teamcenter.rac.aif.AbstractAIFDialog; +import com.teamcenter.rac.aif.AbstractAIFUIApplication; +import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent; +import com.teamcenter.rac.aifrcp.AIFUtility; +import com.teamcenter.rac.commands.open.OpenCommand; +import com.teamcenter.rac.kernel.TCAccessControlService; +import com.teamcenter.rac.kernel.TCComponent; +import com.teamcenter.rac.kernel.TCComponentGroup; +import com.teamcenter.rac.kernel.TCComponentProject; +import com.teamcenter.rac.kernel.TCComponentSchedule; +import com.teamcenter.rac.kernel.TCComponentUser; +import com.teamcenter.rac.kernel.TCException; +import com.teamcenter.rac.kernel.TCPreferenceService; +import com.teamcenter.rac.kernel.TCSession; +import com.teamcenter.rac.kernel.TCUserService; +import com.teamcenter.rac.util.DateButton; +import com.teamcenter.rac.util.MessageBox; +import com.teamcenter.rac.util.PropertyLayout; + +public class ProjectTasksDialog extends JFrame{ + + private static final long serialVersionUID = 1L; + private TCSession session; + private AbstractAIFUIApplication app; + protected TCUserService userService; + + protected JRadioButton radioButton1 = new JRadioButton("未开始"); + protected JRadioButton radioButton2 = new JRadioButton("进行中"); + protected JRadioButton radioButton3 = new JRadioButton("完成"); + protected JRadioButton radioButton4 = new JRadioButton("已关闭"); + protected JRadioButton radioButton5 = new JRadioButton("已中止"); + protected ButtonGroup buttonGroup = new ButtonGroup(); + private JTextField xmbhField; + private JTextField rwmcField; + private JTextField zzField; + private JTextField zzrField; + private DateButton jhkssjPicker; + private DateButton jhkssjzPicker; + private DateButton jhwcsjPicker; + private DateButton jhwcsjzPicker; + + private JTable table = null; // 数据列表 + protected JScrollPane scroll = null; + + private JButton searchButton = new JButton(); + private JButton exportButton = new JButton(); + Date date = null; + + // 首选项中配置的所有显示名称 + private List xxList = new ArrayList<>(); + + // 显示名称 :<属性位置,属性真实名称> + private HashMap> xxMap = new HashMap<>(); + + + // 表格序号 :项目 + HashMap projectConnect = new HashMap<>(); + // 表格序号 :项目名称 + HashMap projectConnectStr = new HashMap<>(); + + // 表格序号 :时间表 + HashMap sjConnect = new HashMap<>(); + + List> allShu = new ArrayList<>(); + String[] columns; + + private Integer num; + +// private S8ProgressBarThread wait; + +// ProgressBarDemo wait = new ProgressBarDemo(); +// +// BusyLabelDemo demo = new BusyLabelDemo(); +// +// private ProgressBarThread wait2; + + private WaitingDialog waiting; + + + public ProjectTasksDialog(AbstractAIFUIApplication app) { +// super(false); + this.app = app; + this.session = (TCSession) app.getSession(); +// initUI(); + } + + + public void initUI() { + FindData(); + this.setTitle("项目任务看板"); + this.setPreferredSize(new Dimension(1400, 480)); + this.setLayout(new BorderLayout()); + + Font font = new Font("宋体", Font.PLAIN, 12);//创建1个字体实例 + Font font2 = new Font("宋体", Font.PLAIN, 10);//创建1个字体实例 + + JPanel midJPanel = new JPanel(new PropertyLayout(10,10,10,10,10,10)); + midJPanel.setPreferredSize(new Dimension(1400, 140)); + + // 第一列 + JLabel xmbhLabel = new JLabel("项目编号:"); + xmbhLabel.setFont(font); + xmbhLabel.setPreferredSize(new Dimension(80, 30)); + midJPanel.add("1.1.left",xmbhLabel); + xmbhField = new JTextField(); + xmbhField.setPreferredSize(new Dimension(190, 30)); + xmbhField.setFont(font); + midJPanel.add("1.2.left",xmbhField); + + JLabel rwmcLabel = new JLabel(" 任务名称:"); + rwmcLabel.setPreferredSize(new Dimension(110, 30)); + rwmcLabel.setFont(font); + midJPanel.add("1.3.left",rwmcLabel); + rwmcField = new JTextField(); + rwmcField.setPreferredSize(new Dimension(190, 30)); + rwmcField.setFont(font); + midJPanel.add("1.4.left",rwmcField); + + // 第二列 + JLabel zzLabel = new JLabel(" 组织:"); + zzLabel.setFont(font); + zzLabel.setPreferredSize(new Dimension(110, 30)); + midJPanel.add("1.5.left",zzLabel); + zzField = new JTextField(); + zzField.setPreferredSize(new Dimension(190, 30)); + zzField.setFont(font); + midJPanel.add("1.6.left",zzField); + + JLabel zzrLabel = new JLabel(" 责任人:"); + zzrLabel.setPreferredSize(new Dimension(110, 30)); + zzrLabel.setFont(font); + midJPanel.add("1.7.left",zzrLabel); + zzrField = new JTextField(); + zzrField.setPreferredSize(new Dimension(190, 30)); + zzrField.setFont(font); + midJPanel.add("1.8.left",zzrField); + + // 第三列 + JLabel jhkssjLabel = new JLabel("计划开始时间:"); + jhkssjLabel.setPreferredSize(new Dimension(80, 30)); + jhkssjLabel.setFont(font); + midJPanel.add("2.1.left",jhkssjLabel); + jhkssjPicker = new DateButton(); + jhkssjPicker.setPreferredSize(new Dimension(190, 30)); + jhkssjPicker.setDate(date); + jhkssjPicker.setFont(font); + midJPanel.add("2.2.left",jhkssjPicker); + + JLabel jhkssjzLabel = new JLabel(" 至"); + jhkssjzLabel.setPreferredSize(new Dimension(110, 30)); + jhkssjzLabel.setFont(font); + midJPanel.add("2.3.left",jhkssjzLabel); + jhkssjzPicker = new DateButton(); + jhkssjzPicker.setPreferredSize(new Dimension(190, 30)); + jhkssjzPicker.setDate(date); + jhkssjzPicker.setFont(font); + midJPanel.add("2.4.left",jhkssjzPicker); + + // 第四列 + JLabel jhwcsjLabel = new JLabel(" 计划完成时间:"); + jhwcsjLabel.setPreferredSize(new Dimension(110, 30)); + jhwcsjLabel.setFont(font); + midJPanel.add("2.5.left",jhwcsjLabel); + jhwcsjPicker = new DateButton(); + jhwcsjPicker.setPreferredSize(new Dimension(190, 30)); + jhwcsjPicker.setDate(date); + jhwcsjPicker.setFont(font); + midJPanel.add("2.6.left",jhwcsjPicker); + + JLabel jhwcsjzLabel = new JLabel(" 至"); + jhwcsjzLabel.setPreferredSize(new Dimension(110, 30)); + jhwcsjzLabel.setFont(font); + midJPanel.add("2.7.left",jhwcsjzLabel); + jhwcsjzPicker = new DateButton(); + jhwcsjzPicker.setPreferredSize(new Dimension(190, 30)); + jhwcsjzPicker.setDate(date); + jhwcsjzPicker.setFont(font); + midJPanel.add("2.8.left",jhwcsjzPicker); + + // 第五列 + JLabel rwztLabel = new JLabel("任务状态:"); + rwztLabel.setPreferredSize(new Dimension(140, 30)); + rwztLabel.setFont(font); + midJPanel.add("3.1.left",rwztLabel); + radioButton1.setSelected(true); + radioButton2.setSelected(true); + radioButton3.setSelected(true); + radioButton4.setSelected(true); + radioButton5.setSelected(true); + midJPanel.add("3.2.left",radioButton1); + midJPanel.add("3.3.left",radioButton2); + midJPanel.add("3.4.left",radioButton3); + midJPanel.add("3.5.left",radioButton4); + midJPanel.add("3.6.left",radioButton5); + + JLabel kgLabel = new JLabel(""); + kgLabel.setPreferredSize(new Dimension(100, 30)); + + searchButton.setPreferredSize(new Dimension(100, 30)); + searchButton.setText("查询"); + searchButton.setFont(font); + exportButton.setPreferredSize(new Dimension(100, 30)); + exportButton.setText("导出"); + exportButton.setFont(font); + exportButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + // 弹出文件选择框 + JFileChooser jfc = new JFileChooser(FileSystemView.getFileSystemView().getHomeDirectory()); + jfc.setDialogTitle("Choose a directory to export the file"); + jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); + int returnValue = jfc.showSaveDialog(null); + if (returnValue == JFileChooser.APPROVE_OPTION) { + File selectedDirectory = jfc.getSelectedFile(); + // 导出数据到Excel + try { + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); + String format = df.format(new Date()); + String fw = selectedDirectory.getAbsolutePath() + "/项目任务看板-" + format + ".xlsx"; + writeExcel(fw, allShu); + JOptionPane.showMessageDialog(null, "导出成功!"); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + } + }); + midJPanel.add("3.7.left",kgLabel); + midJPanel.add("3.8.left",searchButton); + midJPanel.add("3.9.left",exportButton); + + + columns = combineStrings("序号", xxList, "任务状态"); + DefaultTableModel tableModel = new DefaultTableModel(null, columns); + table = new JTable(tableModel){ + + public boolean isCellEditable(int row, int column) { + return false; + } + }; + table .getTableHeader().setReorderingAllowed(false); // 表头列不可拖动换位 + table.setRowHeight(40); + scroll = new JScrollPane(table); + scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); //设置水平滚动条需要时可见 + scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); //设置竖向滚动条需要时可见 + + // 添加表头点击事件监听器 + JTableHeader header = table.getTableHeader(); + header.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + int column = table.columnAtPoint(e.getPoint()); + System.out.println("Clicked column header " + (column + 1)); + allShu = sortByIndexAndUpdateMap(allShu,(column + 1),projectConnectStr,sjConnect); + clearTable(table); + table.updateUI(); + num = 0; + DefaultTableModel m = (DefaultTableModel) table.getModel(); + for(List list : allShu) { + m.addRow(list.toArray()); + } + setTableCellBackgroundByLastColumn(table); + table.updateUI(); + } + + }); + + + this.setLayout(new BorderLayout()); + this.add(midJPanel, BorderLayout.NORTH); + this.add(scroll, BorderLayout.CENTER); + this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); + this.pack(); + this.setResizable(true); + this.setLocationRelativeTo(null); +// this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + this.setExtendedState(JFrame.MAXIMIZED_BOTH); + this.setVisible(true); + + // 添加右击事件 + rightAdd(table); + + + searchButton.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + +// wait.showProgressBar();// 开启进度条 +// demo.showBusyLabel(); +// wait2 = new ProgressBarThread("加载中", "加载中,请稍等..."); +// wait2.start();// 开启进度条 + waiting = new WaitingDialog(null, "等待提示", "正在加载,请稍侯 ..."); + waiting.SetDialogMessage("正在加载,请稍侯 ..."); + waiting.setVisible(true);// 开启进度条 + +// projectConnect = new HashMap<>(); + projectConnectStr = new HashMap<>(); + sjConnect = new HashMap<>(); + allShu = new ArrayList<>(); + num = 0; + + setByPass(true); + clearTable(table); + table.updateUI(); + searchData("yh"); // 此函数执行完成后,所有数据已准备完毕 + num = 0; + DefaultTableModel m = (DefaultTableModel) table.getModel(); + for(List list : allShu) { + m.addRow(list.toArray()); + } + setTableCellBackgroundByLastColumn(table); +// wait.hideProgressBar(); // 关闭进度条 +// demo.hideBusyLabel(); +// wait2.setBool(true);// 关闭进度条 +// wait2.interrupt(); + if (waiting != null) + waiting.setVisible(false);// 关闭进度条 + table.updateUI(); + setByPass(false); + + + } + }); + } + + + private void FindData() { + // TODO Auto-generated method stub + TCPreferenceService preferenceService = session.getPreferenceService(); + String[] strs = preferenceService.getStringValues("MT_ProjTaskDashBoard_Result"); + for (String s : strs) { + String[] split = s.split("="); + List sList = new ArrayList<>(); + if (split.length > 1) { + String[] split2 = split[1].split("\\."); + if(split2.length > 1) { + sList.add(split2[0]); + sList.add(split2[1]); + + xxList.add(split[0]); + xxMap.put(split[0], sList); + } + } + + } + + } + + // * + // 查询到所有的时间表任务uid + public List getStuId() { +// TCComponentProject + + // [PWORKSPACEOBJECT] ScheduleTask pobject_type p_bject_name + String sql = "select puid from PWORKSPACEOBJECT where pobject_type='ScheduleTask' "; + if(xmbhField.getText() != null && !"".equals(xmbhField.getText())) { + sql += "AND pobject_name LIKE '%" + rwmcField.getText() + "%' \r\n"; + } + ResultSet rs = null; + PreparedStatement ps = null; + List list = new ArrayList<>(); + Connection connection = ConnorUtils.getSqlServerConnection(); + try { + System.out.println("SQL:" + sql); + ps = connection.prepareStatement(sql); + rs = ps.executeQuery(); + while(rs != null && rs.next()) { +// System.out.println("查询到了:" + rs.getString(1)); + list.add(rs.getString(1)); + } + } catch (SQLException e1) { + e1.printStackTrace(); + } finally { + if(rs!=null) { + try { + rs.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + if(ps!=null) { + try { + ps.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + if(connection!=null) { + try { + connection.close(); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } + return list; + } + + // 查询到所有的项目对象uid + public String getMaxItemId(String str) { +// TCComponentProject + + String sql = "select puid from PTC_PROJECT where pproject_name='" + str + "'"; +// if(xmbhField.getText() != null && !"".equals(xmbhField.getText())) { +// sql += "AND pproject_id LIKE '" + xmbhField.getText() + "' \r\n"; +// } + ResultSet rs = null; + PreparedStatement ps = null; + String strF = ""; + Connection connection = ConnorUtils.getSqlServerConnection(); + try { + System.out.println("SQL:" + sql); + ps = connection.prepareStatement(sql); + rs = ps.executeQuery(); + while(rs != null && rs.next()) { + System.out.println("查询到了:" + rs.getString(1)); + strF = rs.getString(1); + } + } catch (SQLException e1) { + e1.printStackTrace(); + } finally { + if(rs!=null) { + try { + rs.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + if(ps!=null) { + try { + ps.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + if(connection!=null) { + try { + connection.close(); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } + return strF; + } + + // 查询到所有的项目对象uid + public List getMaxItemId() { +// TCComponentProject + + String sql = "select puid from PTC_PROJECT where 1=1 "; + if(xmbhField.getText() != null && !"".equals(xmbhField.getText())) { + sql += "AND pproject_id LIKE '" + xmbhField.getText() + "' \r\n"; + } + ResultSet rs = null; + PreparedStatement ps = null; + List list = new ArrayList<>(); + Connection connection = ConnorUtils.getSqlServerConnection(); + try { + System.out.println("SQL:" + sql); + ps = connection.prepareStatement(sql); + rs = ps.executeQuery(); + while(rs != null && rs.next()) { + System.out.println("查询到了:" + rs.getString(1)); + list.add(rs.getString(1)); + } + } catch (SQLException e1) { + e1.printStackTrace(); + } finally { + if(rs!=null) { + try { + rs.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + if(ps!=null) { + try { + ps.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + if(connection!=null) { + try { + connection.close(); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } + return list; + } + + public String[] combineStrings(String string1, List xxList2, String string2) { + // 将ArrayList转换为数组 + String[] array = xxList2.toArray(new String[0]); + // 创建一个新的String数组,长度为ArrayList的长度+2 + String[] result = new String[array.length + 2]; + // 添加string1到数组第一个位置 + result[0] = string1; + // 添加ArrayList的内容到数组中间位置 + System.arraycopy(array, 0, result, 1, array.length); + // 添加string2到数组最后一个位置 + result[result.length - 1] = string2; + // 返回新的String数组 + return result; + } + + public void setByPass(boolean val) { + try { + if (userService == null) { + userService = this.session.getUserService(); + } + Object[] obj = new Object[1]; + obj[0] = ""; + if (val) { + System.out.println("旁路已开启"); + userService.call("Connor_set_bypass", obj); + } else { + System.out.println("旁路已关闭"); + userService.call("Connor_close_bypass", obj); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + // 清空表格 + public void clearTable(JTable table) { + DefaultTableModel model = (DefaultTableModel) table.getModel(); + while (model.getRowCount() > 0) { + model.removeRow(0); + } + } + + public void searchData(String st) { + List stuIdList = getStuId(); + try { + for(int number=0; number sjList = new ArrayList<>(); + num++; + sjList.add(num.toString()); + // 遍历所有的显示名称 + for(String s : xxList) { + List list = xxMap.get(s); + if(list.get(0).equals("schtask")) { // schtask代表时间表任务 + String chStr = childer.getProperty(list.get(1)); + if(chStr == null) { + try { + TCComponent relatedComponent = childer.getRelatedComponent(list.get(1)); + if(relatedComponent != null) { + chStr = relatedComponent.toString(); + } + } catch (Exception ee) { + + } + } + sjList.add(chStr == null ? "" : chStr); + } else { // schdeliv为时间表任务交付件 + TCComponent[] relatedComponents = childer.getRelatedComponents("sch_task_deliverable_list"); + if(relatedComponents!=null && relatedComponents.length>0) { + String chStr = relatedComponents[0].getProperty(list.get(1)); + if(chStr == null) { + try { + TCComponent relatedComponent = childer.getRelatedComponent(list.get(1)); + if(relatedComponent != null) { + chStr = relatedComponent.toString(); + } + } catch (Exception ee) { + + } + } + sjList.add(chStr == null ? "" : chStr); + } else { + sjList.add(""); + } + } + } + sjList.add(finish_status); +// projectConnect.put(num.toString(), project); + projectConnectStr.put(num.toString(), pName); + sjConnect.put(num.toString(), childer); + allShu.add(sjList); + } + + + + } + }catch (Exception e) { + e.printStackTrace(); + } + } +// public void searchData() { +// List projectIdList = getMaxItemId(); +// for(int number=0; number0) { +// for(int j=0;j0) { +// for(int k=0;k sjList = new ArrayList<>(); +// HashMap sjMap = new HashMap<>(); +// // child:第一阶段、第二阶段 +// for (TCComponent child : childs) { +// String type = child.getType(); +// if(!"ScheduleTask".equals(type)){ +// continue; +// } +// +// TCComponent[] childers = child.getReferenceListProperty("child_task_taglist"); +// diGUI(childers, project,child); +// +// } +// } +// } +// } +// } +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// } + +// private void diGUI(TCComponent[] childers, TCComponentProject project, TCComponent child) throws TCException { +// // childer:任务名称:项目立项、制造可行性分析 +// for (TCComponent childer : childers) { +// +// boolean eq = childer.getProperty("task_type").equals("0"); +// if(eq) { +// String property = childer.getStringProperty("object_name"); +// String taskName = childer.toString(); // 任务名称 +// System.out.println("任务名称:" + taskName); +// TCComponent person = childer.getRelatedComponent("ResourceAssignment"); // 责任人 +// String pStr = ""; +// String team = ""; +// if(person == null) { +// System.out.println("责任人:"); +//// System.out.println("组织:"); +// } else { +// System.out.println("责任人:" + person.toString()); +// pStr = person.toString(); +// team = ((TCComponentUser) person).getLoginGroup().toString(); // 组织 +//// System.out.println("组织:" + team); +// } +// +// +// // 不符合检索条件,跳过 +// if(rwmcField.getText() != null && !"".equals(rwmcField.getText()) && +// !taskName.contains(rwmcField.getText())) { +//// System.out.println("任务名称不符合,跳过"); +// continue; +// } +// if(zzrField.getText() != null && !"".equals(zzrField.getText()) && +// !pStr.contains(zzrField.getText())) { +//// System.out.println("责任人不符合,跳过"); +// continue; +// } +// if(zzField.getText() != null && !"".equals(zzField.getText()) && +// !team.toString().contains(zzField.getText())) { +//// System.out.println("组织不符合,跳过"); +// continue; +// } +// +// Date startDate = childer.getDateProperty("start_date"); +// Date finish_date = childer.getDateProperty("finish_date"); +// +// if(jhkssjPicker.getDate() != null && startDate == null) { +//// System.out.println("选择了计划开始时间条件,但当前时间表任务的计划开始时间为空,跳过"); +// continue; +// } +// if(jhkssjzPicker.getDate() != null && startDate == null) { +//// System.out.println("选择了计划开始时间条件,但当前时间表任务的计划开始时间为空,跳过"); +// continue; +// } +// if(jhwcsjPicker.getDate() != null && finish_date == null) { +//// System.out.println("选择了计划完成时间条件,但当前时间表任务的计划完成时间为空,跳过"); +// continue; +// } +// if(jhwcsjzPicker.getDate() != null && finish_date == null) { +//// System.out.println("选择了计划完成时间条件,但当前时间表任务的计划完成时间为空,跳过"); +// continue; +// } +// if(jhkssjPicker.getDate() != null && startDate.before(jhkssjPicker.getDate())) { +//// System.out.println("在计划开始时间之前,跳过"); +// continue; +// } +// if(jhkssjzPicker.getDate() != null && startDate.after(jhkssjzPicker.getDate())) { +//// System.out.println("在计划开始时间之后,跳过"); +// continue; +// } +// if(jhwcsjPicker.getDate() != null && finish_date.before(jhwcsjPicker.getDate())) { +//// System.out.println("在计划完成时间之前,跳过"); +// continue; +// } +// if(jhwcsjzPicker.getDate() != null && finish_date.after(jhwcsjzPicker.getDate())) { +//// System.out.println("在计划完成时间之后,跳过"); +// continue; +// } +// +// // 符合检索条件 +// Date actual_finish_date = childer.getDateProperty("actual_finish_date"); +// String finish_status = ""; +// if(actual_finish_date==null) { +// if(finish_date.after(new Date())) { +// finish_status = "进行中"; +// }else if(finish_date.before(new Date())){ +// int days = daysBetweenDates(finish_date, new Date()); +// finish_status = "延期" + days + "天"; +// } else { +// finish_status = "按期完成"; +// } +// }else { +// if(finish_date.after(actual_finish_date)) { +// int days = daysBetweenDates(actual_finish_date, finish_date); +// finish_status = "提前" + days + "天完成"; +// }else if(finish_date.before(actual_finish_date)){ +// int days = daysBetweenDates(finish_date, actual_finish_date); +// finish_status = "延期" + days + "天完成"; +// } else { +// finish_status = "按期完成"; +// } +// } +// +// Date actual_start_date = childer.getDateProperty("actual_start_date"); +// // 如果实际开始时间为空且计划开始时间在当前时间之后,则是未开始 +// if(actual_start_date == null && startDate.after(new Date())) { +// finish_status = "未开始"; +// } +// +// // startDate 计划开始时间 +// // finish_date 计划结束时间 +// // actual_start_date 实际开始时间 +// // actual_finish_date 实际结束时间 +// // before 之前 after 之后 +// +// String status2 = getStatus(actual_start_date, actual_finish_date, new Date()); +// if(!radioButton1.isSelected() && "未开始".equals(status2)) { +// System.out.println("未开始,跳过"); +// continue; +// } +// if(!radioButton2.isSelected() && "进行中".equals(status2)) { +// System.out.println("进行中,跳过"); +// continue; +// } +// if(!radioButton3.isSelected() && "完成".equals(status2)) { +// System.out.println("完成,跳过"); +// continue; +// } +// +// +// List sjList = new ArrayList<>(); +// num++; +// sjList.add(num.toString()); +// // 遍历所有的显示名称 +// for(String s : xxList) { +// List list = xxMap.get(s); +// if(list.get(0).equals("schtask")) { // schtask代表时间表任务 +// String chStr = childer.getProperty(list.get(1)); +// if(chStr == null) { +// try { +// TCComponent relatedComponent = childer.getRelatedComponent(list.get(1)); +// if(relatedComponent != null) { +// chStr = relatedComponent.toString(); +// } +// } catch (Exception ee) { +// +// } +// } +// sjList.add(chStr == null ? "" : chStr); +// } else { // schdeliv为时间表任务交付件 +// TCComponent[] relatedComponents = childer.getRelatedComponents("sch_task_deliverable_list"); +// if(relatedComponents!=null && relatedComponents.length>0) { +// String chStr = relatedComponents[0].getProperty(list.get(1)); +// if(chStr == null) { +// try { +// TCComponent relatedComponent = childer.getRelatedComponent(list.get(1)); +// if(relatedComponent != null) { +// chStr = relatedComponent.toString(); +// } +// } catch (Exception ee) { +// +// } +// } +// sjList.add(chStr == null ? "" : chStr); +// } else { +// sjList.add(""); +// } +// } +// } +// sjList.add(finish_status); +// projectConnect.put(num.toString(), project); +// sjConnect.put(num.toString(), child); +// allShu.add(sjList); +// } +// +// TCComponent[] chi = childer.getReferenceListProperty("child_task_taglist"); +// if(chi != null && chi.length >0) { +// diGUI(chi, project, childer); +// } +// +// } +// +// } + + + // 添加右键事件 + public void rightAdd(JTable table) { + table.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + if (e.getButton() == MouseEvent.BUTTON3) { + int row = table.rowAtPoint(e.getPoint()); + int col = table.columnAtPoint(e.getPoint()); + table.setRowSelectionInterval(row, row); + table.setColumnSelectionInterval(col, col); + JPopupMenu popupMenu = new JPopupMenu(); + JMenuItem genderMenuItem = new JMenuItem("打开项目"); + genderMenuItem.addActionListener(e1 -> { + String valueAt = (String)table.getValueAt(row, 0); + String string = projectConnectStr.get(valueAt); + System.out.println("项目名称:"); + TCComponentProject tcComponentProject = null; + if(string != null && !string.equals("")) { + String projectId = getMaxItemId(string); + try { + tcComponentProject = (TCComponentProject) session.stringToComponent(projectId); + } catch (TCException e2) { + // TODO Auto-generated catch block + e2.printStackTrace(); + } + } +// TCComponentProject tcComponentProject = projectConnect.get(valueAt); + openForm(tcComponentProject); + }); + popupMenu.add(genderMenuItem); + JMenuItem ageMenuItem = new JMenuItem("打开时间表"); + ageMenuItem.addActionListener(e1 -> { + String valueAt = (String)table.getValueAt(row, 0); + TCComponent tcComponent = sjConnect.get(valueAt); + openForm(tcComponent); + }); + popupMenu.add(ageMenuItem); + popupMenu.show(table, e.getX(), e.getY()); + } + + } + }); + } + + // 打开对象 + private void openForm(TCComponent form) { + if(form == null) { + MessageBox.post("时间表任务未关联项目!","提示",MessageBox.INFORMATION); + return; + } + TCAccessControlService accessControlService = session.getTCAccessControlService(); + try { + boolean checkPrivilege = accessControlService.checkPrivilege(form, "READ"); + if(!checkPrivilege) { + MessageBox.post("没有权限打开此对象!","提示",MessageBox.INFORMATION); + return; + } + } catch (TCException e) { + System.out.println("错误,抛出异常"); + MessageBox.post("没有权限打开此对象!","提示",MessageBox.INFORMATION); + return; + } + InterfaceAIFComponent[] contexts = new InterfaceAIFComponent[] { form }; + AbstractAIFCommand abstractaifcommand = new OpenCommand(app.getDesktop(), contexts); + try { + abstractaifcommand.executeModal(); + } catch (Exception e1) { + e1.printStackTrace(); + } + } + + public void setTableCellBackgroundByLastColumn(JTable table) { + // 设置渲染器 + DefaultTableCellRenderer renderer = new DefaultTableCellRenderer() { + public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { + Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); + String grade = (String) table.getValueAt(row, table.getColumnCount() - 1); + if (grade.contains("延期") && !grade.contains("完成")) { + c.setBackground(Color.RED); + } else if (grade.contains("提前")) { + c.setBackground(Color.GREEN); + } else if (grade.contains("延期") && grade.contains("完成")) { + c.setBackground(Color.YELLOW); + } else { + c.setBackground(table.getBackground()); + } + return c; + } + }; + table.getColumnModel().getColumn(table.getColumnCount() - 1).setCellRenderer(renderer); + } + + + public String getStatus(Date plannedStartDate, Date plannedEndDate, + Date actualStartDate, Date actualEndDate, Date currentDate) { + Date startDate; + Date endDate; + if (actualStartDate != null) { + startDate = actualStartDate; + } else { + startDate = plannedStartDate; + } + if (actualEndDate != null) { + endDate = actualEndDate; + } else { + if (actualStartDate != null) { + return "进行中"; + } else { + endDate = plannedEndDate; + } + } + if (currentDate.before(startDate)) { + return "未开始"; + } else if (currentDate.after(endDate)) { + return "完成"; + } else { + return "进行中"; + } + } + + + public static String getStatus2(Date planStart, Date planEnd, Date actualStart, Date actualEnd, Date now) { + Date start = actualStart != null ? actualStart : planStart; + Date end = actualEnd != null ? actualEnd : (actualStart != null ? now : planEnd); + if (now.before(start)) { + return "未开始"; + } else if (now.after(end)) { + return "完成"; + } else { + return "进行中"; + } + } + + public static String getStatus(Date startTime, Date endTime, Date currentTime) { + if (startTime == null) { + return "未开始"; + } else if (startTime.before(currentTime) && endTime == null) { + return "进行中"; + } else if (endTime != null && endTime.before(currentTime)) { + return "完成"; + } else { + return "未开始"; + } + } + + // 日期差 + public static int daysBetweenDates(Date date1, Date date2) { + long difference = date2.getTime() - date1.getTime(); + int num = (int) (difference / (1000 * 60 * 60 * 24)); + return num > 0 ? num : -num; + } + + // 生成excel + public void writeExcel(String filePath, List> data) throws IOException { + // 创建一个工作簿对象 + XSSFWorkbook workbook = new XSSFWorkbook(); + // 创建一个工作表对象 + XSSFSheet sheet = workbook.createSheet(); + // 创建第一行,写表头 + XSSFRow rowHeader = sheet.createRow(0); + // 创建表头单元格对象 + XSSFCell headerCell = rowHeader.createCell(0); + // 设置表头单元格的值 + + // 创建一个单元格合并区域对象,将第一行第一列和第一行最后一列合并 + CellRangeAddress region = new CellRangeAddress(0, 0, 0, data.get(0).size() - 1); + // 使用addMergedRegion方法将单元格合并区域应用到工作表中 + sheet.addMergedRegion(region); +// // 设置表头单元格样式 + CellStyle style = workbook.createCellStyle(); + style.setAlignment(HorizontalAlignment.CENTER); + headerCell.setCellStyle(style); + headerCell.setCellValue("项目任务看板"); + // 写标题 + XSSFRow rowNext = sheet.createRow(1); + for(int i=0; i rowData = data.get(i); + // 遍历当前行数据,将数据写入到行中 + for (int j = 0; j < rowData.size(); j++) { + // 创建一个单元格对象 + XSSFCell cell = row.createCell(j); + // 设置单元格的值 + cell.setCellValue(rowData.get(j)); + } + } + // 创建一个文件输出流对象 + FileOutputStream outputStream = new FileOutputStream(filePath); + // 将工作簿写入到文件输出流中 + workbook.write(outputStream); + // 关闭文件输出流 + outputStream.close(); + } + + // 排序并重新关联 + public List> sortByIndexAndUpdateMap(List> data, int index, + HashMap map, HashMap map2) { + System.out.println("重新排序"); + HashMap newMap = new HashMap(); + HashMap newMap2 = new HashMap(); + + List> sortedList = new ArrayList<>(data); + // 冒泡排序 + if(sortedList.get(0).get(index-1).compareTo(sortedList.get(sortedList.size() -1 ).get(index-1)) < 0) { + System.out.println("从大到小"); + for (int i = 0; i < sortedList.size() - 1; i++) { + for (int j = 0; j < sortedList.size() - 1 - i; j++) { + List list1 = sortedList.get(j); + List list2 = sortedList.get(j + 1); + if (list1.get(index-1).compareTo(list2.get(index-1)) < 0) { + // list1的第i个元素小于list2的第i个元素,交换位置 + sortedList.set(j, list2); + sortedList.set(j + 1, list1); + } + } + } + } else { + System.out.println("从小到大"); + for (int i = 0; i < sortedList.size() - 1; i++) { + for (int j = 0; j < sortedList.size() - 1 - i; j++) { + List list1 = sortedList.get(j); + List list2 = sortedList.get(j + 1); + if (list1.get(index-1).compareTo(list2.get(index-1)) > 0) { + // list1的第i个元素小于list2的第i个元素,交换位置 + sortedList.set(j, list2); + sortedList.set(j + 1, list1); + } + } + } + } + + + // 遍历List>,更新每个List的第一个元素,并更新map中的数据 + for (int i = 0; i < sortedList.size(); i++) { + List list = sortedList.get(i); + String oldIndex = list.get(0); + String newIndex = String.valueOf(i + 1); +// // 更新List的序号 +// list.set(0, newIndex); + // 获取原来关联的TCComponent对象 + String comp = map.get(oldIndex); + // 将TCComponent对象关联到新的序号上 + map.remove(oldIndex); + newMap.put(newIndex, comp); + } + + // 遍历List>,更新每个List的第一个元素,并更新map中的数据 + for (int i = 0; i < sortedList.size(); i++) { + List list = sortedList.get(i); + String oldIndex = list.get(0); + String newIndex = String.valueOf(i + 1); +// // 更新List的序号 +// list.set(0, newIndex); + // 获取原来关联的TCComponent对象 + TCComponent comp = map2.get(oldIndex); + // 将TCComponent对象关联到新的序号上 + map2.remove(oldIndex); + newMap2.put(newIndex, comp); + } + + projectConnectStr = newMap; + sjConnect = newMap2; + + // 遍历List>,更新每个List的第一个元素 + for (int i = 0; i < sortedList.size(); i++) { + List list = sortedList.get(i); + list.set(0, String.valueOf(i + 1)); + } + + System.out.println("排序完成"); + return sortedList; + } + + + +} diff --git a/src/com/connor/mdbksplm/ProjectTasks/ProjectTasksHandler.java b/src/com/connor/mdbksplm/ProjectTasks/ProjectTasksHandler.java new file mode 100644 index 0000000..361e2cf --- /dev/null +++ b/src/com/connor/mdbksplm/ProjectTasks/ProjectTasksHandler.java @@ -0,0 +1,23 @@ +package com.connor.mdbksplm.ProjectTasks; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; + +import com.connor.mdbksplm.projecttaskban.ProjectTaskDialog; +import com.teamcenter.rac.aif.AbstractAIFUIApplication; +import com.teamcenter.rac.aifrcp.AIFUtility; + +public class ProjectTasksHandler extends AbstractHandler{ + + @Override + public Object execute(ExecutionEvent arg0) throws ExecutionException { + System.out.println("开始创建界面"); + AbstractAIFUIApplication app = AIFUtility.getCurrentApplication(); + ProjectTasksDialog dialog = new ProjectTasksDialog(app); + dialog.initUI(); +// new Thread(dialog).start(); + return null; + } + +} \ No newline at end of file diff --git a/src/com/connor/mdbksplm/batchCreateDoc/BatchCreateDocDialog.java b/src/com/connor/mdbksplm/batchCreateDoc/BatchCreateDocDialog.java new file mode 100644 index 0000000..d908f5a --- /dev/null +++ b/src/com/connor/mdbksplm/batchCreateDoc/BatchCreateDocDialog.java @@ -0,0 +1,314 @@ +package com.connor.mdbksplm.batchCreateDoc; + + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; +import java.io.File; +import java.util.ArrayList; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.swing.BorderFactory; +import javax.swing.DefaultComboBoxModel; +import javax.swing.JButton; +import javax.swing.JComboBox; +import javax.swing.JDialog; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.ScrollPaneConstants; +import javax.swing.tree.DefaultTreeModel; +import javax.swing.tree.TreePath; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.NodeList; + +import com.connor.mdbksplm.batchCreateDoc.CheckBoxTree.CheckBoxTree; +import com.connor.mdbksplm.batchCreateDoc.CheckBoxTree.CheckBoxTreeCellRenderer; +import com.connor.mdbksplm.batchCreateDoc.CheckBoxTree.CheckBoxTreeNode; +import com.connor.mdbksplm.batchCreateDoc.CheckBoxTree.CheckBoxTreeNodeSelectionListener; +import com.connor.mdbksplm.batchCreateDoc.bean.TreeData; +//import com.connor.mdbksplm.createDesign.XmlUtil; +import com.teamcenter.rac.aif.AbstractAIFDialog; +import com.teamcenter.rac.aif.AbstractAIFUIApplication; +import com.teamcenter.rac.kernel.TCComponent; +import com.teamcenter.rac.kernel.TCComponentDataset; +import com.teamcenter.rac.kernel.TCComponentTcFile; +import com.teamcenter.rac.kernel.TCSession; +import com.teamcenter.rac.util.MessageBox; + +@SuppressWarnings("serial") +public class BatchCreateDocDialog extends AbstractAIFDialog { + private AbstractAIFUIApplication app = null; + private TCSession session = null; + private TCComponent target = null; + + private static final String PRE_CONFIG = "MT_DeliverableList"; + + private JButton btn_OK = new JButton("确定"); + private JButton btn_Cancel = new JButton("取消"); + private CheckBoxTreeNode rootNode = null; + private CheckBoxTree tree = null; + private JComboBox typeCombox = null; + + private File xmlFile = null; + private Map productTypeMap; + protected Map deliverableMap; + private List types; + protected List selectedDoc = new ArrayList<>(); + protected Map selectedParentMap; + + public BatchCreateDocDialog(AbstractAIFUIApplication app, TCSession session, TCComponent target) { + super(false); + this.app = app; + this.session = session; + this.target = target; + + try { + initHandler(); + initXML(); + initUI(); + initData(); + addListener(); + } catch(Exception e) { + e.printStackTrace(); + MessageBox.post(app.getDesktop(), e.getMessage(), "错误", MessageBox.ERROR); + } + } + + private void initHandler() throws Exception{ + String xmlPuid = session.getPreferenceService().getStringValue(PRE_CONFIG); + TCComponentDataset dataset = (TCComponentDataset) session.stringToComponent(xmlPuid); + if (dataset == null) throw new Exception("未找到数据集,请联系管理员检查首选项" + PRE_CONFIG + "!"); + TCComponentTcFile[] file = dataset.getTcFiles(); + if (file.length == 0 || file.length != 1) throw new Exception("数据集没有命名引用的文件或文件过多,请检查!"); + else xmlFile = file[0].getFmsFile(); + } + + private void initXML() throws Exception { +// Object object; +// object = XmlUtil.xmlToBean(xmlFile, DeliverableList.class); +// DeliverableList productTypes = (DeliverableList) object; +// if(productTypes != null) { +// List productTypeList = productTypes.getProjectList(); +// types = new ArrayList<>(); +// for(ProjectType project : productTypeList) { +// types.add(project.getDisplayname()); +// productTypeMap.put(project.getDisplayname(), project.getPhList()); +// List phList = project.getPhList(); +// for(Phase ph : phList) { +// List deList = ph.getDeliverables(); +// for(Deliverable de : deList) { +// deliverableMap.put(de.getTreename(), de); +// } +// } +// } +// } else throw new Exception("交付物配置文件存在问题,请联系管理员检查!"); + Document doc = XmlUtil.getObject(xmlFile); +// NodeList project_nodes = doc.getElementsByTagName("project"); + NodeList class_nodes = doc.getElementsByTagName("class"); + if(class_nodes != null && class_nodes.getLength() > 0) { + types = new ArrayList<>(); + productTypeMap = new HashMap<>(); + deliverableMap = new HashMap<>(); +// Element project_node = (Element) project_nodes.item(0); +// NodeList class_nodes = project_node.getElementsByTagName("class"); + for(int i = 0; i < class_nodes.getLength(); i++) { + Element class_node = (Element) class_nodes.item(i); + NodeList phase_nodes = class_node.getElementsByTagName("ph1"); + String class_displayName = class_node.getAttribute("displayname"); + types.add(class_displayName); + productTypeMap.put(class_displayName, phase_nodes); + System.out.println("加载一个class节点:" + class_displayName); +// if(phase_nodes == null || phase_nodes.getLength() < 0) continue; +// for(int j = 0; j < phase_nodes.getLength(); j++) { +// NodeList deliverable_nodes = ((Element) class_nodes.item(j)).getElementsByTagName("deliverable"); +// for(int k = 0; k < deliverable_nodes.getLength(); k++) { +// Element deliverable_node = (Element) deliverable_nodes.item(k); +// String de_displayName = deliverable_node.getAttribute("displayname"); +// deliverableMap.put(de_displayName, deliverable_node); +// } +// } + } + } else throw new Exception("交付物配置文件存在问题,请联系管理员检查!"); + } + + private void initUI() throws Exception { + this.setLayout(new BorderLayout()); + this.setTitle("批量创建文档"); + this.setBounds(0, 0, 320, 550); + this.setMinimumSize(new Dimension(320,550)); + this.add(BorderLayout.NORTH, initTitlePanel()); + this.add(BorderLayout.CENTER, initCenterPanel()); + this.add(BorderLayout.SOUTH, initBtnPanel()); + this.setResizable(true); + this.setLocationRelativeTo(null); + this.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); + this.pack(); + } + + private Component initTitlePanel() { + JPanel titlePanel = new JPanel(); + typeCombox = new JComboBox(new DefaultComboBoxModel(types.toArray(new String[types.size()]))); + typeCombox.setSelectedIndex(0); + titlePanel.add(new JLabel("项目类型:")); + titlePanel.add(typeCombox); + titlePanel.setPreferredSize(new Dimension(300, 50)); + titlePanel.setBorder(BorderFactory.createLineBorder(Color.BLACK, 1)); + return titlePanel; + } + + private Component initCenterPanel() { + JScrollPane jscrollPale = new JScrollPane(); + TreeData rootData = new TreeData(target.toString(), target); + rootNode = new CheckBoxTreeNode(rootData); + rootNode.setSelected(true); + DefaultTreeModel model = new DefaultTreeModel(rootNode); + tree = new CheckBoxTree(model); + tree.addMouseListener(new CheckBoxTreeNodeSelectionListener()); + tree.setCellRenderer(new CheckBoxTreeCellRenderer()); + jscrollPale.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED); + jscrollPale.setViewportView(tree); + jscrollPale.setPreferredSize(new Dimension(300, 465)); + jscrollPale.setBorder(BorderFactory.createLineBorder(Color.BLACK, 1)); + return jscrollPale; + } + + private Component initBtnPanel() { + JPanel bottomButtonPane = new JPanel(new FlowLayout(FlowLayout.CENTER, 25, 8)); + bottomButtonPane.add(btn_OK); + bottomButtonPane.add(btn_Cancel); + return bottomButtonPane; + } + + private void initData() throws Exception { + setTreeRoot(rootNode, types.get(0)); + ((DefaultTreeModel) tree.getModel()).nodeStructureChanged(rootNode); + expandAll(tree, new TreePath(rootNode), true); + this.setVisible(true); + } + + private void addListener() throws Exception { + typeCombox.addItemListener(new ItemListener() { + + @Override + public void itemStateChanged(ItemEvent e) { + if (e.getStateChange() == ItemEvent.SELECTED) { + String lx = (String) typeCombox.getSelectedItem(); + setTreeRoot(rootNode, lx); + ((DefaultTreeModel) tree.getModel()).nodeStructureChanged(rootNode); + expandAll(tree, new TreePath(rootNode), true); + } + } + }); + btn_OK.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + getSelectNode(rootNode); + if (selectedDoc.size() < 1) { + MessageBox.post(BatchCreateDocDialog.this, "您没有选择任何文档对象!", "提示", MessageBox.INFORMATION); + } else { + session.queueOperation(new BatchCreateDocOperation(app, session, target, BatchCreateDocDialog.this)); + } + } + + }); + btn_Cancel.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + dispose(); + } + }); + } + + // 设置树节点及获取模板中所有文档对象 + private void setTreeRoot(CheckBoxTreeNode node, String type) { + node.removeAllChildren(); + NodeList phase_nodes = productTypeMap.get(type); + if(phase_nodes != null && phase_nodes.getLength() > 0) { + for(int i = 0; i < phase_nodes.getLength(); i++) { + Element phase_node = (Element) phase_nodes.item(i); + NodeList deliverable_nodes = phase_node.getElementsByTagName("deliverable"); + String phase_treeName = phase_node.getAttribute("treename"); + TreeData treeData = new TreeData(phase_treeName, phase_node, true); + CheckBoxTreeNode childnode = new CheckBoxTreeNode(treeData); + childnode.setSelected(true); + node.add(childnode); + System.out.println("加载一个阶段节点:" + phase_treeName); + if(deliverable_nodes == null || deliverable_nodes.getLength() < 0) continue; + for(int j = 0; j < deliverable_nodes.getLength(); j++) { + Element deliverable_node = (Element) deliverable_nodes.item(j); + String deliverable_treeName = deliverable_node.getAttribute("treename"); + Boolean isMust = Boolean.valueOf(deliverable_node.getAttribute("ismust")); + TreeData treeData2 = new TreeData(deliverable_treeName, deliverable_node, isMust); + CheckBoxTreeNode childnode2 = new CheckBoxTreeNode(treeData2); + childnode2.setSelected(true); + childnode.add(childnode2); + System.out.println("加载一个交付物节点:" + deliverable_treeName); + } + } + } +// for(Phase phase : phases) { +// TreeData treeData = new TreeData(phase.getTreename(), null, false); +// CheckBoxTreeNode childnode = new CheckBoxTreeNode(treeData); +// childnode.setSelected(true); +// node.add(childnode); +// List dlist = phase.getDeliverables(); +// if(dlist == null || dlist.size() < 1) continue; +// for(Deliverable de : dlist) { +// TreeData treeData2 = new TreeData(de.getTreename(), null, de.isIsmust()); +// CheckBoxTreeNode childnode2 = new CheckBoxTreeNode(treeData2); +// childnode2.setSelected(de.isIsmust()); +// childnode.add(childnode2); +// } +// } + } + + // 展开树的所有节点 + @SuppressWarnings("rawtypes") + private void expandAll(CheckBoxTree tree, TreePath parent, boolean expand) { + CheckBoxTreeNode node = (CheckBoxTreeNode) parent.getLastPathComponent(); + if (node.getChildCount() >= 0) { + for (Enumeration e = node.children(); e.hasMoreElements();) { + CheckBoxTreeNode n = (CheckBoxTreeNode) e.nextElement(); + TreePath path = parent.pathByAddingChild(n); + expandAll(tree, path, expand); + } + } + if (expand) { + tree.expandPath(parent); + } else { + tree.collapsePath(parent); + } + } + + // 获取选中的节点 + private void getSelectNode(CheckBoxTreeNode node) { + selectedParentMap = new HashMap<>(); + int nodecount = node.getChildCount(); + for (int i = 0; i < nodecount; i++) { + CheckBoxTreeNode childnode = (CheckBoxTreeNode) node.getChildAt(i); + int nodecount2 = childnode.getChildCount(); + for (int j = 0; j < nodecount2; j++) { + CheckBoxTreeNode childnode2 = (CheckBoxTreeNode) childnode.getChildAt(j); + if (childnode2.isSelected()) { + selectedDoc.add(childnode2); + selectedParentMap.put(childnode2, childnode); + } + } + } + } + +} diff --git a/src/com/connor/mdbksplm/batchCreateDoc/BatchCreateDocHandler.java b/src/com/connor/mdbksplm/batchCreateDoc/BatchCreateDocHandler.java new file mode 100644 index 0000000..797dc5a --- /dev/null +++ b/src/com/connor/mdbksplm/batchCreateDoc/BatchCreateDocHandler.java @@ -0,0 +1,33 @@ +package com.connor.mdbksplm.batchCreateDoc; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; + +import com.teamcenter.rac.aif.AbstractAIFUIApplication; +import com.teamcenter.rac.aifrcp.AIFUtility; +import com.teamcenter.rac.kernel.TCComponent; +import com.teamcenter.rac.kernel.TCComponentProject; +import com.teamcenter.rac.kernel.TCSession; +import com.teamcenter.rac.util.MessageBox; + +public class BatchCreateDocHandler extends AbstractHandler{ + private AbstractAIFUIApplication app = null; + private TCSession session = null; + private TCComponent target = null; + + @Override + public Object execute(ExecutionEvent arg0) throws ExecutionException { + app = AIFUtility.getCurrentApplication(); + session = (TCSession) app.getSession(); + target = (TCComponent) app.getTargetComponent(); + if (target instanceof TCComponentProject) { + BatchCreateDocDialog dialog = new BatchCreateDocDialog(app, session, target); + new Thread(dialog).start(); + } else { + MessageBox.post(app.getDesktop(), "请选择项目文件夹!", "提示", MessageBox.INFORMATION); + } + return null; + } + +} diff --git a/src/com/connor/mdbksplm/batchCreateDoc/BatchCreateDocOperation.java b/src/com/connor/mdbksplm/batchCreateDoc/BatchCreateDocOperation.java new file mode 100644 index 0000000..94014ea --- /dev/null +++ b/src/com/connor/mdbksplm/batchCreateDoc/BatchCreateDocOperation.java @@ -0,0 +1,253 @@ +package com.connor.mdbksplm.batchCreateDoc; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.ArrayList; + +import org.w3c.dom.Element; + +import com.connor.mdbksplm.batchCreateDoc.CheckBoxTree.CheckBoxTreeNode; +import com.connor.mdbksplm.batchCreateDoc.bean.TreeData; +import com.connor.mdbksplm.batchCreateDoc.util.ProgressBarThread; +import com.connor.mdbksplm.batchCreateDoc.util.TCUtils; +import com.teamcenter.rac.aif.AbstractAIFOperation; +import com.teamcenter.rac.aif.AbstractAIFUIApplication; +import com.teamcenter.rac.kernel.TCComponent; +import com.teamcenter.rac.kernel.TCComponentItem; +import com.teamcenter.rac.kernel.TCComponentItemType; +import com.teamcenter.rac.kernel.TCComponentProject; +import com.teamcenter.rac.kernel.TCComponentSchedule; +import com.teamcenter.rac.kernel.TCComponentScheduleDeliverable; +import com.teamcenter.rac.kernel.TCComponentScheduleMember; +import com.teamcenter.rac.kernel.TCComponentType; +import com.teamcenter.rac.kernel.TCComponentUser; +import com.teamcenter.rac.kernel.TCException; +import com.teamcenter.rac.kernel.TCSession; +import com.teamcenter.rac.util.MessageBox; + +public class BatchCreateDocOperation extends AbstractAIFOperation { + + private TCSession session = null; + private AbstractAIFUIApplication app = null; + private TCComponent target = null; + private BatchCreateDocDialog dialog = null; + + public BatchCreateDocOperation(AbstractAIFUIApplication app, TCSession session, TCComponent target, + BatchCreateDocDialog dialog) { + this.app = app; + this.session = session; + this.target = target; + this.dialog = dialog; + } + + @Override + public void executeOperation() throws Exception { + StringBuffer deNull_sb = new StringBuffer(); + StringBuffer typeNull_sb = new StringBuffer(); + StringBuffer cf_sb = new StringBuffer(); + String msg = "批量创建交付物完成!"; + List timeList = getTime(); + TCComponentSchedule time = null; + if(timeList == null) { + MessageBox.post(dialog, "此项目无时间表!", "提示", MessageBox.INFORMATION); + return; + } else if(timeList.size() > 1){ + MessageBox.post(dialog, "此项目有多个时间表请检查!", "提示", MessageBox.INFORMATION); + return; + } else { + time = timeList.get(0); + } + + if(time == null) { + MessageBox.post(dialog, "此项目无时间表!", "提示", MessageBox.INFORMATION); + return; + } +// ProgressBarThread pbt = new ProgressBarThread(dialog, "创建进度", "创建交付物中......"); +// pbt.start(); + try { + Map deMap = getScheduleDeliverable(time); + if(!checkUser(time)) throw new Exception("当前用户不是项目中的project administrator或在时间表中成员资格不是协调者!"); + for (CheckBoxTreeNode node : dialog.selectedDoc) { +// CheckBoxTreeNode parentNode = dialog.selectedParentMap.get(node); + TreeData treeData = (TreeData) node.getObj(); +// TreeData parentTreeData = (TreeData) parentNode.getObj(); + Element deliverable_node = (Element) treeData.getObj(); + String object_type = deliverable_node.getAttribute("object_type"); + TCComponentItemType type = (TCComponentItemType) session.getTypeComponent(object_type); + if(type == null) { + System.out.println(object_type + "在PLM不存在对应类型!"); + continue; + } + String name = treeData.getName(); +// String parentName = parentTreeData.getName(); + TCComponentScheduleDeliverable sd = deMap.get(name); + if(sd == null) { + deNull_sb.append("【" + name + "】"); + System.out.println(name + "在时间表中没有对应的交付物!"); + continue; + } + String deType = sd.getProperty("deliverable_type"); + System.out.println("时间表交付类型:" + deType + ",配置文件中对象类型:" + type.getDisplayType() + "," + type.getDisplayTypeName()); +// boolean flag = removeDeliverable(parentName, object_type, name,cf_sb); + if(isDuplicate(sd)) { + cf_sb.append("【" + name + "】"); + System.out.println(deType + "重复创建跳过"); + continue; + } + if(!deType.isEmpty() && type.getDisplayType().equals(deType)) { + System.out.println("创建对象:" + deType); + TCComponentItem item = type.create(type.getNewID(), type.getNewRev(null), object_type, name, null, null); + sd.getTCProperty("deliverable_inst").setReferenceValue(item); + ((TCComponentProject)target).assignToProject(new TCComponent[] {item}); + } else { + typeNull_sb.append("【" + name + "】"); + System.out.println(name + "在时间表中对应的交付物类型为空或类型不匹配!"); + } + } +// pbt.shutdownThread(); + if(cf_sb.length() > 0) + msg = msg + cf_sb.toString() + "交付物已经创建请勿重新创建!"; + if(deNull_sb.length() > 0) + msg = msg + deNull_sb.toString() + "在时间表中没有对应的交付物,不进行创建!"; + if(typeNull_sb.length() > 0) + msg = msg + typeNull_sb.toString() + "在时间表中对应的交付物类型为空或类型不匹配,不进行创建!"; + MessageBox.post(app.getDesktop(), msg, "提示", MessageBox.INFORMATION); + dialog.dispose(); + } catch (Exception e) { + e.printStackTrace(); +// pbt.shutdownThread(); + MessageBox.post(dialog, "创建失败," + e.getMessage(), "错误", MessageBox.ERROR); + } + } + + private boolean isDuplicate(TCComponentScheduleDeliverable sd) throws TCException { + TCComponent item = sd.getTCProperty("deliverable_inst").getReferenceValue(); + if(item != null) { + return true; + } + return false; + } + + private boolean removeDeliverable(String parentName, String object_type, String name, StringBuffer sb) { + try { + TCComponent[] folders = target.getReferenceListProperty("project_data"); + if(folders != null && folders.length > 0) { + for(TCComponent folder : folders) { + System.out.println("项目下对象>>" + folder.toString() + ",移除父文件夹:" + parentName); + if(parentName.equals(folder.toString())) { + TCComponent[] scs = folder.getReferenceListProperty("project_data"); + if(scs != null && scs.length > 0) { + System.out.println("文件夹数量>>" + scs.length); + for(TCComponent sc : scs) { + System.out.println("项目下对象>>" + sc.toString() + ",移除父文件夹:" + name); + if(name.equals(sc.toString())) { + TCComponent[] datas = sc.getReferenceListProperty("project_data"); + for(TCComponent data : datas) { + System.out.println("当前对象名称:" + data.getProperty("object_name") + ",类型:" + data.getType() + + ",需要移除的类型为:" + object_type + ",需要移除的名称为:" + name); + if(object_type.equals(data.getType()) && name.equals(data.getProperty("object_name"))) { +// System.out.println("移除数据!"); +// target.refresh(); +// ((TCComponentProject)target).removeFromProject(new TCComponent[] {data}); +// target.refresh(); + sb.append("【" + name + "】"); + return true; + } + } + } + } + } + } + } + } + } catch (TCException e) { + e.printStackTrace(); + } + return false; + } + + private boolean checkUser(TCComponentSchedule time) throws TCException { + String userId = session.getUser().getUserId(); + System.out.println("当前用户用户ID:" + userId); + TCComponentUser projUser = (TCComponentUser) target.getReferenceProperty("owning_user"); + TCComponent[] scmembers = time.getReferenceListProperty("fnd0Schedulemember_taglist"); + System.out.println("项目所有者用户ID:" + projUser.getUserId()); + + // *2023/5/8修改创建交付物时需检查此用户是否为项目中的 + // project Administrator或Team Administrator或时间表中的时间表成员资格是否为协调者 + boolean flag = false; + if(userId.equals(projUser.getUserId())) { + return true; + } + for(TCComponent scmember : scmembers) { + TCComponentScheduleMember member = (TCComponentScheduleMember)scmember; + int number = member.getTCProperty("member_priv").getIntValue();//成员特权 0-协调员,1-参与者和2-观察者 + TCComponent scUser = member.getReferenceProperty("resource_tag"); + System.out.println("时间表成员:" + scUser.toDisplayString() + ",成员特权:" + number); + if(scUser instanceof TCComponentUser) { + if(userId.equals(((TCComponentUser) scUser).getUserId()) && number == 2) flag = true; + } else System.out.println("时间表成员不属于用户:" + scUser.getClass().getName()); + } + return flag; + +// if(userId.equals(projUser.getUserId())) { +// for(TCComponent scmember : scmembers) { +// TCComponentScheduleMember member = (TCComponentScheduleMember)scmember; +// int number = member.getTCProperty("member_priv").getIntValue();//成员特权 0-协调员,1-参与者和2-观察者 +// TCComponent scUser = member.getReferenceProperty("resource_tag"); +// System.out.println("时间表成员:" + scUser.toDisplayString() + ",成员特权:" + number); +// if(scUser instanceof TCComponentUser) { +// if(userId.equals(((TCComponentUser) scUser).getUserId()) && number == 2) return true; +// } else System.out.println("时间表成员不属于用户:" + scUser.getClass().getName()); +// } +// } +// return false; + } + + private Map getScheduleDeliverable(TCComponentSchedule time) throws TCException { + Map map = new HashMap<>(); + TCComponent[] des = time.getReferenceListProperty("schedule_deliverable_list"); + if(des != null && des.length > 0) { + for(TCComponent de : des) { + TCComponentScheduleDeliverable sd = (TCComponentScheduleDeliverable) de; + String deName = sd.getProperty("deliverable_name"); + map.put(deName, sd); + } + } else throw new TCException("时间表不存在交付件!"); + return map; + } + + private List getTime() { + List scList = new ArrayList<>(); + try { + target.refresh(); + TCComponent[] folders = target.getReferenceListProperty("project_data"); + + if(folders != null && folders.length > 0) { + System.out.println("选中项目数据数量>>" + folders.length); + for(TCComponent folder : folders) { + System.out.println("项目下对象>>" + folder.toString()); + if("时间表".equals(folder.toString())) { + TCComponent[] scs = folder.getReferenceListProperty("project_data"); + if(scs != null && scs.length > 0) { + for(TCComponent sc : scs) { + if(sc instanceof TCComponentSchedule) { + scList.add((TCComponentSchedule) sc); + } + } + + } + } + } + } + } catch (TCException e) { + e.printStackTrace(); + } + if(scList.size() > 0) { + return scList; + } + return null; + } + +} diff --git a/src/com/connor/mdbksplm/batchCreateDoc/CheckBoxTree/CheckBoxTree.java b/src/com/connor/mdbksplm/batchCreateDoc/CheckBoxTree/CheckBoxTree.java new file mode 100644 index 0000000..2e0ce11 --- /dev/null +++ b/src/com/connor/mdbksplm/batchCreateDoc/CheckBoxTree/CheckBoxTree.java @@ -0,0 +1,16 @@ +package com.connor.mdbksplm.batchCreateDoc.CheckBoxTree; + +import javax.swing.JTree; +import javax.swing.tree.DefaultTreeModel; + +public class CheckBoxTree extends JTree { + + public CheckBoxTree() { + + } + + public CheckBoxTree(DefaultTreeModel model) { + super(model); + this.setRowHeight(25); + } +} diff --git a/src/com/connor/mdbksplm/batchCreateDoc/CheckBoxTree/CheckBoxTreeCellRenderer.java b/src/com/connor/mdbksplm/batchCreateDoc/CheckBoxTree/CheckBoxTreeCellRenderer.java new file mode 100644 index 0000000..ac88fbe --- /dev/null +++ b/src/com/connor/mdbksplm/batchCreateDoc/CheckBoxTree/CheckBoxTreeCellRenderer.java @@ -0,0 +1,109 @@ +package com.connor.mdbksplm.batchCreateDoc.CheckBoxTree; + +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; +import java.net.URL; + +import javax.swing.ImageIcon; +import javax.swing.JCheckBox; +import javax.swing.JPanel; +import javax.swing.JTree; +import javax.swing.UIManager; +import javax.swing.plaf.ColorUIResource; +import javax.swing.tree.TreeCellRenderer; + +import com.connor.mdbksplm.batchCreateDoc.bean.TreeData; +import com.connor.mdbksplm.batchCreateDoc.util.ComponentUtils; +import com.teamcenter.rac.kernel.TCComponent; + +public class CheckBoxTreeCellRenderer extends JPanel implements TreeCellRenderer { + + private static final long serialVersionUID = 1L; + protected JCheckBox check; + protected CheckBoxTreeLabel label; + + public CheckBoxTreeCellRenderer() { + setLayout(null); + add(check = new JCheckBox()); + add(label = new CheckBoxTreeLabel()); + check.setBackground(UIManager.getColor("Tree.textBackground")); + label.setForeground(UIManager.getColor("Tree.textForeground")); + } + + /** + * 返回的是一个JPanel对象,该对象中包含一个JCheckBox对象 + * 和一个JLabel对象。并且根据每个结点是否被选中来决定JCheckBox 是否被选中。 + */ + @Override + public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, + boolean leaf, int row, boolean hasFocus) { + String stringValue = tree.convertValueToText(value, selected, expanded, leaf, row, hasFocus); +// URL folderUrl = this.getClass().getResource("icons/folder.png"); +// URL projectUrl = this.getClass().getResource("icons/project.png"); +// URL docUrl = this.getClass().getResource("icons/doc.png"); +// ImageIcon folderIcon = new ImageIcon(folderUrl); +// ImageIcon projectIcon = new ImageIcon(projectUrl); +// ImageIcon docIcon = new ImageIcon(docUrl); +// ImageIcon folderThumbnailIcon = new ImageIcon(ComponentUtils.getScaledImage(folderIcon.getImage(), 25, 25)); +// ImageIcon projectThumbnailIcon = new ImageIcon(ComponentUtils.getScaledImage(projectIcon.getImage(), 25, 25)); +// ImageIcon docThumbnailIcon = new ImageIcon(ComponentUtils.getScaledImage(docIcon.getImage(), 25, 25)); + CheckBoxTreeNode node = (CheckBoxTreeNode) value; + TreeData treeData = (TreeData) node.getObj(); + TCComponent tccomp = treeData.getTccomp(); + setEnabled(tree.isEnabled()); + check.setSelected(((CheckBoxTreeNode) value).isSelected()); + label.setFont(tree.getFont()); + label.setText(stringValue); + label.setSelected(selected); + label.setFocus(hasFocus); +// if (tccomp.getType().equals(CreateDocDialog.ITME_TYPE)) { +// label.setIcon(docThumbnailIcon); +// } else if (tccomp.getType().equals(CreateDocDialog.PROJECT_FOLDER_TYPE)) { +// label.setIcon(projectThumbnailIcon); +// } else { +// label.setIcon(folderThumbnailIcon); +// } + label.setIcon(null); + +// if (leaf) +// label.setIcon(UIManager.getIcon("Tree.leafIcon")); +// else if (expanded) +// label.setIcon(UIManager.getIcon("Tree.openIcon")); +// else +// label.setIcon(UIManager.getIcon("Tree.closedIcon")); + return this; + } + + @Override + public Dimension getPreferredSize() { + Dimension dCheck = check.getPreferredSize(); + Dimension dLabel = label.getPreferredSize(); + return new Dimension(dCheck.width + dLabel.width, + dCheck.height < dLabel.height ? dLabel.height : dCheck.height); + } + + @Override + public void doLayout() { + Dimension dCheck = check.getPreferredSize(); + Dimension dLabel = label.getPreferredSize(); + int yCheck = 0; + int yLabel = 0; + if (dCheck.height < dLabel.height) + yCheck = (dLabel.height - dCheck.height) / 2; + else + yLabel = (dCheck.height - dLabel.height) / 2; + check.setLocation(0, yCheck); + check.setBounds(0, yCheck, dCheck.width, dCheck.height); + label.setLocation(dCheck.width, yLabel); + label.setBounds(dCheck.width, yLabel, dLabel.width, dLabel.height); + } + + @Override + public void setBackground(Color color) { + if (color instanceof ColorUIResource) + color = null; + super.setBackground(color); + } + +} diff --git a/src/com/connor/mdbksplm/batchCreateDoc/CheckBoxTree/CheckBoxTreeLabel.java b/src/com/connor/mdbksplm/batchCreateDoc/CheckBoxTree/CheckBoxTreeLabel.java new file mode 100644 index 0000000..d6beb6b --- /dev/null +++ b/src/com/connor/mdbksplm/batchCreateDoc/CheckBoxTree/CheckBoxTreeLabel.java @@ -0,0 +1,67 @@ +package com.connor.mdbksplm.batchCreateDoc.CheckBoxTree; + +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Graphics; + +import javax.swing.Icon; +import javax.swing.JLabel; +import javax.swing.UIManager; +import javax.swing.plaf.ColorUIResource; + +public class CheckBoxTreeLabel extends JLabel { + + private boolean isSelected; + private boolean hasFocus; + + public CheckBoxTreeLabel() { + } + + @Override + public void setBackground(Color color) { + if (color instanceof ColorUIResource) + color = null; + super.setBackground(color); + } + + @Override + public void paint(Graphics g) { + String str; + if ((str = getText()) != null) { + if (0 < str.length()) { + if (isSelected) + g.setColor(UIManager.getColor("Tree.selectionBackground")); + else + g.setColor(UIManager.getColor("Tree.textBackground")); + Dimension d = getPreferredSize(); + int imageOffset = 0; + Icon currentIcon = getIcon(); + if (currentIcon != null) + imageOffset = currentIcon.getIconWidth() + Math.max(0, getIconTextGap() - 1); + g.fillRect(imageOffset, 0, d.width - 1 - imageOffset, d.height); + if (hasFocus) { + g.setColor(UIManager.getColor("Tree.selectionBorderColor")); + g.drawRect(imageOffset, 0, d.width - 1 - imageOffset, d.height - 1); + } + } + } + super.paint(g); + } + + @Override + public Dimension getPreferredSize() { + Dimension retDimension = super.getPreferredSize(); + if (retDimension != null) + retDimension = new Dimension(retDimension.width + 3, retDimension.height); + return retDimension; + } + + public void setSelected(boolean isSelected) { + this.isSelected = isSelected; + } + + public void setFocus(boolean hasFocus) { + this.hasFocus = hasFocus; + } + +} diff --git a/src/com/connor/mdbksplm/batchCreateDoc/CheckBoxTree/CheckBoxTreeNode.java b/src/com/connor/mdbksplm/batchCreateDoc/CheckBoxTree/CheckBoxTreeNode.java new file mode 100644 index 0000000..63c8f8a --- /dev/null +++ b/src/com/connor/mdbksplm/batchCreateDoc/CheckBoxTree/CheckBoxTreeNode.java @@ -0,0 +1,95 @@ +package com.connor.mdbksplm.batchCreateDoc.CheckBoxTree; + +import javax.swing.tree.DefaultMutableTreeNode; + +public class CheckBoxTreeNode extends DefaultMutableTreeNode { + + protected boolean isSelected; + private Object obj; + + public CheckBoxTreeNode() { + this(null); + } + + public CheckBoxTreeNode(Object userObject) { + this(userObject, true, false); + obj = userObject; + } + + public CheckBoxTreeNode(Object userObject, boolean allowsChildren, boolean isSelected) { + super(userObject, allowsChildren); + this.isSelected = isSelected; + } + + public Object getObj() { + return obj; + } + + public void setObj(Object obj) { + this.obj = obj; + } + + public boolean isSelected() { + return isSelected; + } + + public void setSelected(boolean _isSelected) { + this.isSelected = _isSelected; + + if (_isSelected) { + // 如果选中,则将其所有的子结点都选中 + if (children != null) { + for (Object obj : children) { + CheckBoxTreeNode node = (CheckBoxTreeNode) obj; + if (_isSelected != node.isSelected()) + node.setSelected(_isSelected); + } + } + // 向上检查,如果父结点的所有子结点都被选中,那么将父结点也选中 + CheckBoxTreeNode pNode = (CheckBoxTreeNode) parent; + // 开始检查pNode的所有子节点是否都被选中 + if (pNode != null) { + int index = 0; + for (; index < pNode.children.size(); ++index) { + CheckBoxTreeNode pChildNode = (CheckBoxTreeNode) pNode.children.get(index); + if (!pChildNode.isSelected()) + break; + } + /* + * 表明pNode所有子结点都已经选中,则选中父结点, 该方法是一个递归方法,因此在此不需要进行迭代,因为 当选中父结点后,父结点本身会向上检查的。 + */ + if (index == pNode.children.size()) { + if (pNode.isSelected() != _isSelected) + pNode.setSelected(_isSelected); + } + } + } else { + /* + * 如果是取消父结点导致子结点取消,那么此时所有的子结点都应该是选择上的; 否则就是子结点取消导致父结点取消,然后父结点取消导致需要取消子结点,但 + * 是这时候是不需要取消子结点的。 + */ + if (children != null) { + int index = 0; + for (; index < children.size(); ++index) { + CheckBoxTreeNode childNode = (CheckBoxTreeNode) children.get(index); + if (!childNode.isSelected()) + break; + } + // 从上向下取消的时候 + if (index == children.size()) { + for (int i = 0; i < children.size(); ++i) { + CheckBoxTreeNode node = (CheckBoxTreeNode) children.get(i); + if (node.isSelected() != _isSelected) + node.setSelected(_isSelected); + } + } + } + + // 向上取消,只要存在一个子节点不是选上的,那么父节点就不应该被选上。 + CheckBoxTreeNode pNode = (CheckBoxTreeNode) parent; + if (pNode != null && pNode.isSelected() != _isSelected) + pNode.setSelected(_isSelected); + } + } + +} diff --git a/src/com/connor/mdbksplm/batchCreateDoc/CheckBoxTree/CheckBoxTreeNodeSelectionListener.java b/src/com/connor/mdbksplm/batchCreateDoc/CheckBoxTree/CheckBoxTreeNodeSelectionListener.java new file mode 100644 index 0000000..b9bbbaf --- /dev/null +++ b/src/com/connor/mdbksplm/batchCreateDoc/CheckBoxTree/CheckBoxTreeNodeSelectionListener.java @@ -0,0 +1,35 @@ +package com.connor.mdbksplm.batchCreateDoc.CheckBoxTree; + +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; + +import javax.swing.JTree; +import javax.swing.tree.DefaultTreeModel; +import javax.swing.tree.TreePath; + +import com.connor.mdbksplm.batchCreateDoc.bean.TreeData; +import com.teamcenter.rac.util.MessageBox; + +public class CheckBoxTreeNodeSelectionListener extends MouseAdapter { + + @Override + public void mouseClicked(MouseEvent event) { + JTree tree = (JTree) event.getSource(); + int x = event.getX(); + int y = event.getY(); + int row = tree.getRowForLocation(x, y); + TreePath path = tree.getPathForRow(row); + if (path != null) { + CheckBoxTreeNode node = (CheckBoxTreeNode) path.getLastPathComponent(); + if (node != null) { + TreeData treeData = (TreeData) node.getObj(); + boolean isSelected = !node.isSelected(); + boolean isMust = treeData.isMust; + node.setSelected(isSelected); + ((DefaultTreeModel) tree.getModel()).nodeStructureChanged(node); + if(isMust && !isSelected) MessageBox.post(treeData.getName() + "节点为必选节点,当前已取消选择!", "提示", MessageBox.INFORMATION); + } + } + } + +} diff --git a/src/com/connor/mdbksplm/batchCreateDoc/XmlUtil.java b/src/com/connor/mdbksplm/batchCreateDoc/XmlUtil.java new file mode 100644 index 0000000..42c9049 --- /dev/null +++ b/src/com/connor/mdbksplm/batchCreateDoc/XmlUtil.java @@ -0,0 +1,56 @@ +package com.connor.mdbksplm.batchCreateDoc; + +/** + * @copyRight 浙江康勒科技有限公司 + * @author 作者 E-mail:hub@connor.net.cn + * @date 创建时间:2017-7-2 下午8:52:53 + * @version v1.0 + * @parameter + * @since + * @return + */ + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; + +import javax.xml.bind.JAXBContext; +import javax.xml.bind.JAXBException; +import javax.xml.bind.Unmarshaller; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.NodeList; + +public class XmlUtil { + + /** + * xml文件配置转换为对象 + * + * @param xmlPath xml文件路径 + * @param load java对象.Class + * @return java对象 + * @throws JAXBException + * @throws IOException + */ + public static Object xmlToBean(File xmlfile, Class load) throws JAXBException, IOException { + JAXBContext context = JAXBContext.newInstance(load); + Unmarshaller unmarshaller = context.createUnmarshaller(); + Object object = unmarshaller.unmarshal(xmlfile); + return object; + } + + public static Document getObject(File file) throws Exception{ + DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance(); + dbf.setIgnoringElementContentWhitespace(true); + DocumentBuilder db=dbf.newDocumentBuilder(); + InputStream is = new FileInputStream(file.getAbsolutePath()); + Document doc=db.parse(is); + return doc; + } + +} \ No newline at end of file diff --git a/src/com/connor/mdbksplm/batchCreateDoc/bean/Deliverable.java b/src/com/connor/mdbksplm/batchCreateDoc/bean/Deliverable.java new file mode 100644 index 0000000..59d8df8 --- /dev/null +++ b/src/com/connor/mdbksplm/batchCreateDoc/bean/Deliverable.java @@ -0,0 +1,45 @@ +package com.connor.mdbksplm.batchCreateDoc.bean; + +import javax.xml.bind.annotation.XmlAttribute; + +public class Deliverable { + String treename; + String object_type; + boolean ismust; + + public Deliverable() {} + + public Deliverable(String treename, String object_type, boolean ismust) { + this.treename = treename; + this.object_type = object_type; + this.ismust = ismust; + } + + @XmlAttribute(name = "treename") + public String getTreename() { + return treename; + } + + public void setTreename(String treename) { + this.treename = treename; + } + + @XmlAttribute(name = "object_type") + public String getObject_type() { + return object_type; + } + + public void setObject_type(String object_type) { + this.object_type = object_type; + } + + @XmlAttribute(name = "ismust") + public boolean isIsmust() { + return ismust; + } + + public void setIsmust(boolean ismust) { + this.ismust = ismust; + } + +} diff --git a/src/com/connor/mdbksplm/batchCreateDoc/bean/DeliverableList.java b/src/com/connor/mdbksplm/batchCreateDoc/bean/DeliverableList.java new file mode 100644 index 0000000..548eada --- /dev/null +++ b/src/com/connor/mdbksplm/batchCreateDoc/bean/DeliverableList.java @@ -0,0 +1,29 @@ +package com.connor.mdbksplm.batchCreateDoc.bean; + +import java.util.List; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement(name = "deliverable") +public class DeliverableList { + List projectList; + + public DeliverableList() {} + + public DeliverableList(List projectList) { + this.projectList = projectList; + } + + @XmlElement(name = "class") + public List getProjectList() { + return projectList; + } + + public void setProjectList(List projectList) { + this.projectList = projectList; + } + + + +} diff --git a/src/com/connor/mdbksplm/batchCreateDoc/bean/Phase.java b/src/com/connor/mdbksplm/batchCreateDoc/bean/Phase.java new file mode 100644 index 0000000..a806041 --- /dev/null +++ b/src/com/connor/mdbksplm/batchCreateDoc/bean/Phase.java @@ -0,0 +1,41 @@ +package com.connor.mdbksplm.batchCreateDoc.bean; + +import java.util.List; + +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlElement; + +public class Phase { + String treename; + List deliverables; + + public Phase() { + super(); + } + + public Phase(String treename, List deliverables) { + this.treename = treename; + this.deliverables = deliverables; + } + + @XmlAttribute(name = "treename") + public String getTreename() { + return treename; + } + + public void setTreename(String treename) { + this.treename = treename; + } + + @XmlElement(name = "deliverable") + public List getDeliverables() { + return deliverables; + } + + public void setDeliverables(List deliverables) { + this.deliverables = deliverables; + } + + + +} diff --git a/src/com/connor/mdbksplm/batchCreateDoc/bean/ProjectType.java b/src/com/connor/mdbksplm/batchCreateDoc/bean/ProjectType.java new file mode 100644 index 0000000..7545f8f --- /dev/null +++ b/src/com/connor/mdbksplm/batchCreateDoc/bean/ProjectType.java @@ -0,0 +1,39 @@ +package com.connor.mdbksplm.batchCreateDoc.bean; + +import java.util.List; + +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlElement; + +public class ProjectType { + String displayname; + List phList; + + public ProjectType() {} + + public ProjectType(String displayname, List phList) { + this.displayname = displayname; + this.phList = phList; + } + + @XmlAttribute(name = "displayname") + public String getDisplayname() { + return displayname; + } + + public void setDisplayname(String displayname) { + this.displayname = displayname; + } + + @XmlElement(name = "ph1") + public List getPhList() { + return phList; + } + + public void setPhList(List phList) { + this.phList = phList; + } + + + +} diff --git a/src/com/connor/mdbksplm/batchCreateDoc/bean/TreeData.java b/src/com/connor/mdbksplm/batchCreateDoc/bean/TreeData.java new file mode 100644 index 0000000..6be70f8 --- /dev/null +++ b/src/com/connor/mdbksplm/batchCreateDoc/bean/TreeData.java @@ -0,0 +1,69 @@ +package com.connor.mdbksplm.batchCreateDoc.bean; + +import com.teamcenter.rac.kernel.TCComponent; + +public class TreeData { + public String name; + public TCComponent tccomp; + public boolean isMust; + public Object obj; + + public Object getObj() { + return obj; + } + + public void setObj(Object obj) { + this.obj = obj; + } + + public boolean isMust() { + return isMust; + } + + public void setMust(boolean isMust) { + this.isMust = isMust; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public TCComponent getTccomp() { + return tccomp; + } + + public void setTccomp(TCComponent tccomp) { + this.tccomp = tccomp; + } + + public TreeData(String name) { + super(); + this.name = name; + } + + public TreeData(String _name, TCComponent _tccomp) { + name = _name; + tccomp = _tccomp; + } + + public TreeData(String name, TCComponent tccomp, boolean isMust) { + this.name = name; + this.tccomp = tccomp; + this.isMust = isMust; + } + + public TreeData(String name, Object obj, boolean isMust) { + this.name = name; + this.obj = obj; + this.isMust = isMust; + } + + public String toString() { + return name; + } + +} diff --git a/src/com/connor/mdbksplm/batchCreateDoc/util/CommonlyUtils.java b/src/com/connor/mdbksplm/batchCreateDoc/util/CommonlyUtils.java new file mode 100644 index 0000000..d062bb1 --- /dev/null +++ b/src/com/connor/mdbksplm/batchCreateDoc/util/CommonlyUtils.java @@ -0,0 +1,336 @@ +package com.connor.mdbksplm.batchCreateDoc.util; + + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.text.SimpleDateFormat; +import java.util.Collections; +import java.util.Comparator; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; + +//import com.google.gson.Gson; +//import com.google.gson.GsonBuilder; +import com.teamcenter.rac.kernel.TCComponent; +import com.teamcenter.rac.kernel.TCComponentBOMLine; +import com.teamcenter.rac.kernel.TCComponentItemRevision; +import com.teamcenter.soa.client.model.ModelObject; + +public class CommonlyUtils { + + public static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + public static final SimpleDateFormat fileNameSDF = new SimpleDateFormat ( "yyyyMMddHHmmss" ); + public static final String EMPTY_STRING = ""; + + // 控制台日志 + public static void outInfo(Object obj) { + System.out.println(">" + obj.toString()); + } + + /** + * 数组插入元素 + * + * @param arr 数组 + * @param str 元素 + * @return + */ + public static String[] insert(String[] arr, String str) { + String[] tmp = null; + if (arr == null) { + tmp = new String[1]; + tmp[0] = str; + } else { + int size = arr.length; + tmp = new String[size + 1]; + for (int i = 0; i < size; i++) { +// if (arr[i].equals(str)) +// return arr; + tmp[i] = arr[i]; + } + tmp[size] = str; + } + return tmp; + } + + /** + * 数组插入元素 + * + * @param arr 数组 + * @param str 元素 + * @return + */ + public static Integer[] insert(Integer[] arr, Integer str) { + Integer[] tmp = null; + if (arr == null) { + tmp = new Integer[1]; + tmp[0] = str; + } else { + int size = arr.length; + tmp = new Integer[size + 1]; + for (int i = 0; i < size; i++) { +// if (arr[i].equals(str)) +// return arr; + tmp[i] = arr[i]; + } + tmp[size] = str; + } + return tmp; + } + + /** + * 二位数组插入一行元素(长度必须一样) + * + * @param arr 数组 + * @param str 元素 + * @return + */ + public static String[][] insert(String[][] arr, String[] str) { + String[][] tmp = null; + if (str == null) { + return arr; + } + int size2 = str.length; + if (arr == null) { + tmp = new String[1][size2]; + for (int j = 0; j < size2; j++) { + tmp[0][j] = str[j]; + } + } else { + int size = arr.length; + tmp = new String[size + 1][size2]; + for (int i = 0; i < size; i++) { + for (int j = 0; j < size2; j++) { + tmp[i][j] = arr[i][j]; + } + } + for (int i = 0; i < size2; i++) { + tmp[size][i] = str[i]; + } + } + return tmp; + } + +// // JSON转对象 +// public static T jsonToObject(Class objclass, String json) throws Exception { +//// Gson gson = new Gson(); +// GsonBuilder gsonbuilder = new GsonBuilder().serializeNulls(); +// Gson gson = gsonbuilder.create(); +// return gson.fromJson(json, objclass); +// } +// +// // 对象转JSON +// public static String objectToJsonIsNULL(Object obj) { +//// Gson gson = new Gson(); +// //显示null,不对特殊字符转义 +// GsonBuilder gsonbuilder = new GsonBuilder().serializeNulls().disableHtmlEscaping(); +// Gson gson = gsonbuilder.create(); +// String jsonstr = gson.toJson(obj); +// return jsonstr; +// } +// +// // 对象转JSON +// public static String objectToJson(Object obj) { +// GsonBuilder gsonbuilder = new GsonBuilder().disableHtmlEscaping(); +// Gson gson = gsonbuilder.create(); +// String jsonstr = gson.toJson(obj); +// return jsonstr; +// } + + public static String getNowDate(){ + return fileNameSDF.format(new Date()); + } + + public static int getLen(Object[] objs) { + return objs == null ? 0 : objs.length; + } + + public static int getLen(List objs) { + return objs == null ? 0 : objs.size(); + } + + public static boolean isEmpty(String str){ + if (str != null && str.length() > 0){ + return false; + } + return true; + } + + public static boolean isEmpty(T t){ + if (t != null ){ + return false; + } + return true; + } + + public static boolean isEmpty(Object[] str){ + if (str != null && str.length > 0){ + return false; + } + return true; + } + + public static boolean isEmpty(ModelObject[] objs){ + if (objs != null && objs.length > 0){ + return false; + } + return true; + } + + public static boolean isEmptyList(List list){ + if (list != null && list.size() > 0){ + return false; + } + return true; + } + + public static boolean isEmpty(ModelObject obj){ + if (obj != null){ + return false; + } + return true; + } + + public static boolean isEmpty(List objs) { + if (objs != null && objs.size() > 0) return false; + return true; + } + + public static boolean isEmptyRev(List str){ + if (str != null && str.size() > 0){ + return false; + } + return true; + } + + public static boolean isEmptyBom(List str){ + if (str != null && str.size() > 0){ + return false; + } + return true; + } + +// public static boolean isEmpty(Object obj) { +// if (obj != null) return false; +// return true; +// } + + public static String getNotNull(String str) { + return str == null ? EMPTY_STRING : str; + } + + /** + * 连接数组 + * @param string + * @param values + * @return + */ + public static String concatArray(String connector,T...objects) { + if(objects==null || objects.length<1)return EMPTY_STRING; + StringBuffer sb = new StringBuffer(); + for(int i=0;i0)sb.append(connector); + sb.append(objects[i].toString()); + } + return sb.toString(); + } + + /**数组排序 + * + * @param list 排序数组 + * @param str 根据排序的字段名 + * @param + */ + public static void sortList(List list, String str) throws Exception { + if (CommonlyUtils.isEmpty(str)) throw new Exception("字段名称为空!"); + Collections.sort(list, new Comparator() { + + @Override + public int compare(T t1, T t2) { + try { + Integer v1 = CommonlyUtils.getEntityValue(t1,str); + Integer v2 = CommonlyUtils.getEntityValue(t2,str); + if (v1 >= v2) { + return 1; + } else { + return -1; + } + } catch (NumberFormatException e2) { + return -1; + } + } + }); + } + + public static Integer getEntityValue(T t, String str) { + Integer value = null; + if (CommonlyUtils.isEmpty(str)) return null; + String name = str.substring(0, 1).toUpperCase() + str.substring(1); + try { + Method m = t.getClass().getMethod("get" + name); + value = (Integer) m.invoke(t); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + return value; + } + + /** + * 删除不能成为文件名的字符 + * @param fileStr + * @return + */ + public static String removeIllegalFileChars(String fileStr) { + String replacedFileStr = fileStr; + replacedFileStr = replace(replacedFileStr, " ", "_"); + replacedFileStr = replace(replacedFileStr, "&", EMPTY_STRING); + replacedFileStr = replace(replacedFileStr, "%", EMPTY_STRING); + replacedFileStr = replace(replacedFileStr, ",", EMPTY_STRING); + replacedFileStr = replace(replacedFileStr, ";", EMPTY_STRING); + replacedFileStr = replace(replacedFileStr, "/", "_"); + return replacedFileStr; + } + + /** + * 替换字符串 + * @param text 原始文本 + * @param replaced 要替换内容 + * @param replacement 替换内容 + * @return + */ + public static String replace(String text, String replaced, String replacement) { + StringBuffer ret = new StringBuffer(); + String temp = text; + while (temp.indexOf(replaced) > -1) { + ret.append(temp.substring(0, temp.indexOf(replaced)) + replacement); + temp = temp.substring(temp.indexOf(replaced) + replaced.length()); + } + ret.append(temp); + return ret.toString(); + } + + /** + * 获取map中第一个数据值 + * + * @param map 数据源 + * @return + */ + public static ModelObject getFirstOrNull(Map map) { + ModelObject obj = null; + for (Entry entry : map.entrySet()) { + obj = entry.getValue(); + if (obj != null) { + break; + } + } + return obj; + } + + +} diff --git a/src/com/connor/mdbksplm/batchCreateDoc/util/ComponentUtils.java b/src/com/connor/mdbksplm/batchCreateDoc/util/ComponentUtils.java new file mode 100644 index 0000000..2520734 --- /dev/null +++ b/src/com/connor/mdbksplm/batchCreateDoc/util/ComponentUtils.java @@ -0,0 +1,139 @@ +package com.connor.mdbksplm.batchCreateDoc.util; + +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.Graphics2D; +import java.awt.GridBagConstraints; +import java.awt.Image; +import java.awt.RenderingHints; +import java.awt.image.BufferedImage; +import java.io.File; + +import javax.swing.JFileChooser; +import javax.swing.JPanel; +import javax.swing.JTable; +import javax.swing.filechooser.FileSystemView; +import javax.swing.table.TableModel; + +public class ComponentUtils { + + public static TextBorderUtlis BLACKBORDER = new TextBorderUtlis(new Color(0, 0, 0), 1, false); + public static TextBorderUtlis REDBORDER = new TextBorderUtlis(new Color(255, 0, 0), 1, false); + public static Dimension textFieldDim = new Dimension(150, 25); + + /** + * 向Grid界面添加组件 + * + * @param panel + * @param comp + * @param s + * @param x + * @param y + * @param width + * @param height + */ + public static void addCompToGrid(JPanel panel, Component comp, GridBagConstraints s, int x, int y, int width, + int height) { + s.gridx = x; + s.gridy = y; + s.gridwidth = width; + s.gridheight = height; + panel.add(comp, s); + } + + /** + * 图片设置大小 + * + * @param srcImg + * @param w + * @param h + * @return + */ + public static Image getScaledImage(Image srcImg, int w, int h) { + + BufferedImage resizedImg = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = resizedImg.createGraphics(); + g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR); + g.drawImage(srcImg, 0, 0, w, h, null); + g.dispose(); + return resizedImg; + } + + /** + * 按比例设置图片大小(没用) + * + * @param srcImg + * @param w + * @param h + * @return + */ + public static Image getScaledImage(BufferedImage srcImg, Double w, Double h) { + int height = srcImg.getHeight(); + int width = srcImg.getWidth(); + BufferedImage resizedImg = new BufferedImage(Double.valueOf(width * w).intValue(), + Double.valueOf(height * h).intValue(), BufferedImage.TYPE_INT_ARGB); + Graphics2D g = resizedImg.createGraphics(); + g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR); + g.drawImage(srcImg, 0, 0, null); + g.dispose(); + return resizedImg; + } + + /** + * 打开文件选择器返回选择路径地址 + * + * @return + */ + public static String getFilePath() { + JFileChooser jfc = new JFileChooser(); + FileSystemView fsv = FileSystemView.getFileSystemView(); + String deskTop = fsv.getHomeDirectory().getPath(); + jfc.setCurrentDirectory(new File(deskTop)); + jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); + jfc.setDialogTitle("请选择模板导出的位置"); + jfc.setApproveButtonText("导出"); + int state = jfc.showOpenDialog(null); + if (state == 1) { + return null; + } else { + File f = jfc.getSelectedFile(); + return f.getAbsolutePath(); + } + } + + /** + * 获取表格数据 + * + * @param table + * @param row + * @param column + * @return + */ + public static String getTableStringValue(JTable table, int row, int column) { + return table.getValueAt(row, column) == null ? "" : table.getValueAt(row, column).toString(); + } + + public static String getTableStringValue(TableModel model, int row, int column) { + return model.getValueAt(row, column) == null ? "" : model.getValueAt(row, column).toString(); + } + + public static Integer getTableIntegerValue(TableModel model, int row, int column) { + return model.getValueAt(row, column) == null || model.getValueAt(row, column).toString() == "" ? null : Integer.parseInt(model.getValueAt(row, column).toString()); + } + + /** + * 组件内容输入校验 + */ +// InputVerifier verifier = new InputVerifier() { +// public boolean verify(JComponent comp) { +// JTextField textField = (JTextField) comp; +// if (textField.getText().trim() == "") { +// flag = false; +// } else { +// flag = true; +// } +// return flag; +// } +// }; +} diff --git a/src/com/connor/mdbksplm/batchCreateDoc/util/ProgressBarThread.java b/src/com/connor/mdbksplm/batchCreateDoc/util/ProgressBarThread.java new file mode 100644 index 0000000..f621b9d --- /dev/null +++ b/src/com/connor/mdbksplm/batchCreateDoc/util/ProgressBarThread.java @@ -0,0 +1,101 @@ +package com.connor.mdbksplm.batchCreateDoc.util; + +import java.awt.Container; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.GridLayout; +import java.awt.Rectangle; + +import javax.swing.JDialog; +import javax.swing.JFrame; +import javax.swing.JProgressBar; +import javax.swing.JTextField; +import javax.swing.SwingUtilities; + +public class ProgressBarThread extends Thread { + + private volatile boolean flag = true; + private JProgressBar progressBar = new JProgressBar(); + private JTextField text; + private JDialog dialog; + private String title = ""; + + public ProgressBarThread(String s1, String s2) { + super(); + this.dialog = new JDialog(); + this.title = s1; + this.text = new JTextField(s2, 30); + + } + + public ProgressBarThread(JDialog dialog, String s1, String s2) { + super(); + this.dialog = new JDialog(dialog, true); + this.title = s1; + this.text = new JTextField(s2, 30); + + } + + public ProgressBarThread(JFrame dialog, String s1, String s2) { + super(); + this.dialog = new JDialog(dialog, true); + this.title = s1; + this.text = new JTextField(s2, 30); + } + + @Override + public void run() { + init(); + while (flag) { + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + SwingUtilities.invokeLater(new Runnable() { + + @Override + public void run() { + // TODO Auto-generated method stub + // 更新操作通过事件派发线程完成(一般实现Runnable()接口) + Dimension d = progressBar.getSize(); + progressBar.setValue(progressBar.getMaximum()); + Rectangle rect = new Rectangle(0, 0, d.width, d.height); + progressBar.paintImmediately(rect); + text.setText("完成"); + progressBar.setIndeterminate(false); + } + }); + + } + + public void init() { + + progressBar.setIndeterminate(true); + text.setFont(new Font("谐体", Font.BOLD | Font.ITALIC, 16)); + // 设置文本的水平对齐方式 + text.setEnabled(false); + text.setHorizontalAlignment(JTextField.CENTER); + + Container contentPane = dialog.getContentPane(); + contentPane.setLayout(new GridLayout(2, 1)); + contentPane.add("1.1.center.top", text); + contentPane.add("2.1.center.top", progressBar); + dialog.setTitle(title); + dialog.setSize(300, 100); + dialog.setResizable(false); + dialog.setLocationRelativeTo(null); + dialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); + dialog.setVisible(true); + } + + public void shutdownThread() { + this.flag = false; + if (dialog != null) { + dialog.dispose(); + dialog = null; + } + } + +} diff --git a/src/com/connor/mdbksplm/batchCreateDoc/util/TCUtils.java b/src/com/connor/mdbksplm/batchCreateDoc/util/TCUtils.java new file mode 100644 index 0000000..b9146fd --- /dev/null +++ b/src/com/connor/mdbksplm/batchCreateDoc/util/TCUtils.java @@ -0,0 +1,195 @@ +package com.connor.mdbksplm.batchCreateDoc.util; + +import java.io.File; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Calendar; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import com.teamcenter.rac.kernel.DeepCopyInfo; +import com.teamcenter.rac.kernel.SoaUtil; +import com.teamcenter.rac.kernel.TCComponent; +import com.teamcenter.rac.kernel.TCComponentDataset; +import com.teamcenter.rac.kernel.TCComponentDatasetType; +import com.teamcenter.rac.kernel.TCComponentItem; +import com.teamcenter.rac.kernel.TCComponentItemRevision; +import com.teamcenter.rac.kernel.TCComponentItemType; +import com.teamcenter.rac.kernel.TCException; +import com.teamcenter.rac.kernel.TCSession; +import com.teamcenter.rac.kernel.TCUserService; +import com.teamcenter.services.rac.core.DataManagementService; +import com.teamcenter.services.rac.core._2008_06.DataManagement.CreateIn; +import com.teamcenter.services.rac.core._2008_06.DataManagement.CreateInput; +import com.teamcenter.services.rac.core._2008_06.DataManagement.CreateOut; +import com.teamcenter.services.rac.core._2008_06.DataManagement.CreateResponse; + +@SuppressWarnings("deprecation") +public class TCUtils { + + public static String getPrefValue(TCSession session, String prefName) throws Exception { + return session.getPreferenceService().getStringValue(prefName); + } + + public static String[] getPrefValues(TCSession session, String prefName) throws Exception { + return session.getPreferenceService().getStringValues(prefName); + } + + public static void setByPassItk(TCSession session, boolean val) { + try { + TCUserService userservice = session.getUserService(); + userservice.call(val ? "Connor_set_bypass" : "Connor_close_bypass", new Object[] { "" }); + System.out.println(val ? "Open Bypass" : "Close Bypass"); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public static TCComponentDataset uploadFile(TCSession session, TCComponent rev, File newFile, String dsName, String dsTypeName, String refName, String rel) throws Exception { + TCComponentDataset ds = (TCComponentDataset) getChildByTypeAndName(rev, dsTypeName, dsName, rel); + if (ds == null) { + TCComponentDatasetType dsType = (TCComponentDatasetType) session.getTypeComponent(dsTypeName); + ds = dsType.create(dsName, "", dsTypeName); + if (rev != null) { + rev.add(rel, ds); + rev.refresh(); + } + } + setDsFile(ds, refName, newFile); + return ds; + } + + public static void setDsFile(TCComponentDataset ds, String refName, File newFile) throws Exception { + String[] refs = new String[] { refName }; + String[] files = new String[] { newFile.getAbsolutePath() }; + ds.setFiles(files, refs); + // ds.save(); + ds.refresh(); + } + + public static TCComponent getChildByTypeAndName(TCComponent parent, String cType, String cName, String relation) throws Exception { + if (parent == null || CommonlyUtils.isEmpty(cType)|| CommonlyUtils.isEmpty(cName)) { + return null; + } + parent.refresh(); + TCComponent[] kids = parent.getRelatedComponents(relation); + if(kids==null) { + return null; + } + for (TCComponent c : kids) { + if (c.getType().equals(cType) && cName.equals((c.getStringProperty("object_name")))) { + return c; + } + } + return null; + } + + /** + * + * @param rev 另存为对象版本 + * @param type 另存为对象类型 + * @param relation 另存为对象下关系文件夹真实值 + * @throws TCException + */ + public static TCComponentItem saveAsItem(TCSession session, TCComponentItemRevision rev,String type,String relation) throws TCException { + TCComponentItemType Type = (TCComponentItemType) session.getTypeService().getTypeComponent(type); + TCComponent[] datasets = rev.getReferenceListProperty(relation); + List list = new ArrayList<>(); + if(datasets != null && datasets.length > 0) { + for(int i = 0; i < datasets.length; i++) { + DeepCopyInfo info = new DeepCopyInfo(datasets[i], 0, "", relation, true, false, true); + list.add(info); + } + } + TCComponentItem newItem = rev.saveAsItem(Type.getNewID(), Type.getNewRev(null), rev.getProperty("object_name"),"", true, + list.toArray(new DeepCopyInfo[list.size()])); + return newItem; + } + + /** + * + * @param rev 另存为对象版本 + * @param type 另存为对象类型 + * @param relation 另存为对象下关系文件夹真实值 + * @throws TCException + */ + public static TCComponentItem saveAsItem2(TCSession session, TCComponentItemRevision rev,String type,String relation) throws TCException { + TCComponentItemType Type = (TCComponentItemType) session.getTypeService().getTypeComponent(type); + TCComponentItem newItem = rev.saveAsItem(Type.getNewID(), Type.getNewRev(null)); + TCComponent[] datasets = rev.getReferenceListProperty(relation); + if(datasets == null || datasets.length < 1) return newItem; + TCComponentItemRevision newRev = newItem.getLatestItemRevision(); + TCComponent[] oldDataset = newRev.getReferenceListProperty(relation); + if(datasets != null || datasets.length > 0) newRev.remove(relation, Arrays.asList(oldDataset)); + for(int i = 0; i < datasets.length; i++) { + if(datasets[i] instanceof TCComponentDataset) { + TCComponentDataset newDataset = ((TCComponentDataset)datasets[i]).saveAs(datasets[i].getProperty("object_name")); + newRev.add(relation, newDataset); + } + } + return newItem; + } + + + public static TCComponentItem createItemBySOA(TCSession session, String itemTypeName, String revTypeName, String revMasterTypeName, String itemId, String revId, String name, Map stringProps, + Map dateProps, Map stringArrayProps) throws Exception { + if (CommonlyUtils.isEmpty(itemTypeName) || CommonlyUtils.isEmpty(revTypeName) || CommonlyUtils.isEmpty(revMasterTypeName)) { + return null; + } + CreateInput revMasterInput = new CreateInput(); + revMasterInput.boName = revMasterTypeName; + if (stringProps != null) { + revMasterInput.stringProps = stringProps; + } + if (dateProps != null) { + revMasterInput.dateProps = dateProps; + } + if (stringArrayProps != null) { + revMasterInput.stringArrayProps = stringArrayProps; + } + CreateInput revInput = new CreateInput(); + revInput.boName = revTypeName; + Map revPropMap = new HashMap<>(); + if (!CommonlyUtils.isEmpty(revId)) { + revPropMap.put("item_revision_id", revId); + } + revInput.stringProps = revPropMap; + Map revMasterInfoMap = new HashMap<>(); + revMasterInfoMap.put("IMAN_master_form_rev", new CreateInput[] { revMasterInput }); + revInput.compoundCreateInput = revMasterInfoMap; + // create rev + CreateInput itemInput = new CreateInput(); + itemInput.boName = itemTypeName; + Map itemPropMap = new HashMap<>(); + if (!CommonlyUtils.isEmpty(itemId)) { + itemPropMap.put("item_id", itemId); + } + if (!CommonlyUtils.isEmpty(name)) { + itemPropMap.put("object_name", name); + } + itemInput.stringProps = itemPropMap; + Map revInfoMap = new HashMap<>(); + revInfoMap.put("revision", new CreateInput[] { revInput }); + itemInput.compoundCreateInput = revInfoMap; + // create info + CreateIn cI = new CreateIn(); + cI.clientId = "CreateItem"; + cI.data = itemInput; + // service + DataManagementService service = DataManagementService.getService(session); + // create + CreateResponse resp = service.createObjects(new CreateIn[] { cI }); + SoaUtil.checkPartialErrors(resp.serviceData); + CreateOut[] cOs = resp.output; + if (cOs.length > 0) { + for (TCComponent s : cOs[0].objects) { + if (s instanceof TCComponentItem) { + return (TCComponentItem) s; + } + } + } + return null; + } + +} diff --git a/src/com/connor/mdbksplm/batchCreateDoc/util/TextBorderUtlis.java b/src/com/connor/mdbksplm/batchCreateDoc/util/TextBorderUtlis.java new file mode 100644 index 0000000..6bf52d4 --- /dev/null +++ b/src/com/connor/mdbksplm/batchCreateDoc/util/TextBorderUtlis.java @@ -0,0 +1,42 @@ +package com.connor.mdbksplm.batchCreateDoc.util; + +import java.awt.Color; +import java.awt.Component; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.RenderingHints; + +import javax.swing.border.LineBorder; + +/** + * @author user 边框设置 + */ + +public class TextBorderUtlis extends LineBorder { + + private static final long serialVersionUID = 1L; + + // color边框颜色,thickness边框宽度,roundedCorners是否圆角 + public TextBorderUtlis(Color color, int thickness, boolean roundedCorners) { + super(color, thickness, roundedCorners); + } + + public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) { + + RenderingHints rh = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + Color oldColor = g.getColor(); + Graphics2D g2 = (Graphics2D) g; + int i; + g2.setRenderingHints(rh); + g2.setColor(lineColor); + for (i = 0; i < thickness; i++) { + if (!roundedCorners) { + g2.drawRect(x + i, y + i, width - i - i - 1, height - i - i - 1); + } else { + g2.drawRoundRect(x + i, y + i, width - i - i - 1, height - i - i - 1, 5, 5); + } + } + g2.setColor(oldColor); + } + +} \ No newline at end of file diff --git a/src/com/connor/mdbksplm/creatematter/CreateMatterDialog.java b/src/com/connor/mdbksplm/creatematter/CreateMatterDialog.java new file mode 100644 index 0000000..f2c5552 --- /dev/null +++ b/src/com/connor/mdbksplm/creatematter/CreateMatterDialog.java @@ -0,0 +1,996 @@ +package com.connor.mdbksplm.creatematter; + +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Date; + +import javax.swing.JButton; +import javax.swing.JComboBox; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTextField; + +import org.jdom2.JDOMException; +import org.w3c.dom.Document; +//import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.NodeList; + +import com.teamcenter.rac.aif.AbstractAIFDialog; +import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent; +import com.teamcenter.rac.kernel.ListOfValuesInfo; +import com.teamcenter.rac.kernel.TCComponent; +import com.teamcenter.rac.kernel.TCComponentItem; +import com.teamcenter.rac.kernel.TCComponentItemRevision; +import com.teamcenter.rac.kernel.TCComponentItemType; +import com.teamcenter.rac.kernel.TCComponentDataset; +import com.teamcenter.rac.kernel.TCComponentListOfValues; +import com.teamcenter.rac.kernel.TCComponentListOfValuesType; +import com.teamcenter.rac.kernel.TCComponentTcFile; +import com.teamcenter.rac.kernel.TCComponentType; +import com.teamcenter.rac.kernel.TCException; +import com.teamcenter.rac.kernel.TCPreferenceService; +import com.teamcenter.rac.kernel.TCProperty; +import com.teamcenter.rac.kernel.TCSession; +import com.teamcenter.rac.kernel.TCTypeService; +import com.teamcenter.rac.kernel.TCUserService; +import com.teamcenter.rac.util.MessageBox; +import com.teamcenter.rac.util.PropertyLayout; +import com.teamcenter.soa.client.model.LovValue; +import com.connor.mdbksplm.creatematter.ReadXmlFileToString; +import com.connor.mdbksplm.treamlist.CNProperty; +import com.connor.mdbksplm.util.DeepCopy; + +public class CreateMatterDialog extends AbstractAIFDialog{ + + protected JScrollPane scrollPane; + protected JScrollPane scrollPane1; + + private JTextField textField; + private JButton okButton; + private JButton celButton; + private JButton pathButton; + + private JLabel oneType; + private JComboBox oneTypeBox; + private JLabel twoType; + private JComboBox twoTypeBox; + private JLabel threeType; + private JComboBox threeTypeBox; + + private JLabel fourType; + private JTextField fourField; + private JLabel otherType; + private JTextField otherField; + + private TCSession session; + private TCComponent comp; + private String groupName; + +// private ProgressBarThread wait; + + private HashMap oneList = new HashMap<>(); // 一类 + private HashMap twoList = new HashMap<>(); // 二类 + private HashMap threeList = new HashMap<>(); // 三类 + private List> shuXing = new ArrayList>(); + + private HashMap textEnd = new HashMap<>(); // 文本类属性框 + private HashMap> boxEnd = new HashMap<>(); // 下拉类属性框 + private HashMap boxEndArray = new HashMap<>(); // 下拉array类属性框 + + private String itemType; // 创建的item类型 + + HashMap> disMap = new HashMap>(); + private List> disList = new ArrayList>(); + private HashMap idtextEnd = new HashMap<>(); // id文本类属性框 + private HashMap> idboxEnd = new HashMap<>(); // id下拉类属性框 + + private HashMap, List>> idboxEnd2 = new HashMap<>(); // id下拉类属性框2 + +// +// +// +// + private HashMap>> lovMap = new HashMap<>(); + +// +// +// + private List> eleL = new ArrayList<>(); + +// +// +// + private List> shuxL = new ArrayList<>(); + + protected TCUserService userService; + + public CreateMatterDialog(TCComponent comp,TCSession session, String groupName) { + super(false); + this.comp=comp; + this.session=session; + this.groupName = groupName; + initUI(); + } + + public void initUI() { + this.setSize(new Dimension(600, 800)); + this.setTitle("物料创建"); + + // 获取所有的属性:值 + FindData(); // lovMap eleL shuxL + + // 所有的id属性panel + List idPanelList = new ArrayList<>(); + if(eleL != null && eleL.size() > 0) { + for (List listS : eleL) { +// System.out.println("eleL:" + eleL.get(0)); + // listS[0]:displayname [1]:order [2]:isLov [3]:lovtype + JPanel panel = new JPanel(new FlowLayout()); + + // 创建左Lable + JLabel lLeft = new JLabel(listS.get(0) + ":"); + lLeft.setPreferredSize(new Dimension(100, 25)); + + panel.add(lLeft); + + // 创建右边 + if(listS.get(2).equals("false")) { //不是下拉,是文本框 + JTextField lRight = new JTextField(); + lRight.setPreferredSize(new Dimension(250, 25)); + panel.add(lRight); + + idtextEnd.put(listS.get(0), lRight); + + } else { // 是下拉,要根据下拉值获取lov显示值:真实值 +// List lStr = new ArrayList<>(); + JComboBox lRight = new JComboBox(); + lRight.setPreferredSize(new Dimension(250, 25)); + String lovType = listS.get(3); // 根据项目类型获取对应的lov + if(lovMap.get(lovType) != null && lovMap.get(lovType).size() > 0) { + List> list = lovMap.get(lovType); + lRight.addItem(""); + for(List s : list) { + lRight.addItem(s.get(0)); + } + idboxEnd2.put(lRight, list); + } + + + panel.add(lRight); + + idboxEnd.put(listS.get(0), lRight); + + } + + idPanelList.add(panel); + } + + } + + // 给每一个下拉框添加监听 + if(idboxEnd.size() > 0) { + idboxEnd.forEach((k,v) -> { + // 级联获取下拉框的显示值 + v.addActionListener(new ActionListener() { +// @SuppressWarnings({ "unlikely-arg-type", "deprecation" }) + @Override + public void actionPerformed(ActionEvent arg0) { + // 总体逻辑:先根据下拉框对象获取到对应的dispalyname(即k), + // 再通过遍历eleL找到k的List,再找到它的下一个List,再下一个List + // 是lov的情况下,获取k对应的list的lovtype,根据lovtype获取到对应的 + // lovMap中的list,遍历list和v中的值做对比,获取对比到的list中的sublovtype + // 根据这个sublovtype获取lovMap中对应的下拉list,这个list即为下一个下拉框里面的值 +// System.out.println("监听到了" + k); + for(int i=0; i> list = idboxEnd2.get(v); + + if(list == null || list.size() == 0) { + JComboBox jComboBox = idboxEnd.get(eleL.get(i+1).get(0)); + idboxEnd2.put(jComboBox, null); +// jComboBox.ActionListener(); +// jComboBox.action(null, idPanelList) + try { + System.out.println("删除下拉选项" + eleL.get(i+1).get(0)); + jComboBox.removeAllItems(); + } catch (Exception ee) { + System.out.println("没有可以删除的下拉选项"); + } + jComboBox.addItem(""); + + break; + } + + for(List s : list) { + if(s.get(0).equals((String)v.getSelectedItem())) { + // 此时的s是下一个下拉框该对应的 + List> list2 = lovMap.get(s.get(1)); + JComboBox jComboBox = idboxEnd.get(eleL.get(i+1).get(0)); + idboxEnd2.put(jComboBox, list2); + try { + System.out.println("删除下拉选项" + eleL.get(i+1).get(0)); + jComboBox.removeAllItems(); + } catch (Exception ee) { + System.out.println("没有可以删除的下拉选项"); + } + for(int j=0; j panelList = new ArrayList<>(); + if(shuxL != null && shuxL.size() > 0) { + for (List listS : shuxL) { + // listS[0]:对象/版本/版本表单 [1]:属性真实名 [2]:属性显示名 [3]:属性类型 [4]:默认值 [5]:是否必填 [6]:是否下拉 [7]:下拉值 + JPanel panel = new JPanel(new FlowLayout()); + + // 创建左Lable + JLabel lLeft = new JLabel(listS.get(2) + ":"); + lLeft.setPreferredSize(new Dimension(100, 25)); + + panel.add(lLeft); + + // 创建右边 + if(listS.get(6).equals("false")) { //不是下拉,是文本框 + JTextField lRight = new JTextField(listS.get(4)); + lRight.setPreferredSize(new Dimension(250, 25)); + panel.add(lRight); + textEnd.put(listS.get(1), lRight); + + } else { // 是下拉,要根据下拉值获取lov显示值:真实值 + if(listS.get(3).equals("array")) { + CNProperty cn1 = new CNProperty(); + cn1.setLovName(listS.get(7)); + cn1.initProperty(); + + + + HashMap map = cn1.getLovDesc(); + List lovValueList = new ArrayList<>(); + DeepCopy.deepCopy(cn1.lovValueList, lovValueList); + for(int op =0 ; op < lovValueList.size(); op ++) { + + String string = lovValueList.get(op); + lovValueList.set(op, lovValueList.get(op) + " -- " + + (map.get(string) == null ? "无描述" : map.get(string))); + System.out.println("lovValueList:" + lovValueList.get(op)); + } + + MultiComboBox lRight = new MultiComboBox(lovValueList.toArray()); + + panel.add(lRight); + boxEndArray.put(listS.get(1), lRight); + } else { + JComboBox lRight = new JComboBox(); + lRight.setPreferredSize(new Dimension(250, 25)); + + if(listS.get(1).equals("uom_tag")) { + Map lovMap = new LinkedHashMap(); + System.out.println("获取" + listS.get(7) + "的LOV"); + lovMap = getLOVs(listS.get(7)); + // 把所有的提出部门的显示值获取到 + lovMap.forEach((k,v)->{ + System.out.println("uom_tag获取到了k:" + k + ",v:" + v); + if(!v.equals("")) { + lRight.addItem(k); + } + }); + } else { + CNProperty cn1 = new CNProperty(); + + cn1.setLovName(listS.get(7)); + cn1.initProperty(); + + for(int i=0;i 0){ +// setByPass(false); + String stringBuffer = buffer.toString(); + MessageBox.post(stringBuffer, "提示", MessageBox.INFORMATION); + return; + } + // 开始创建 +// wait = new ProgressBarThread("创建物料", "创建物料中,请稍等..."); +// wait.start();// 开启进度条 + String idName = ""; + String addName = ""; + for(int i=0;i jComboBox = idboxEnd.get(eleL.get(i).get(0)); + List> list = idboxEnd2.get(jComboBox); + for(int j=0; j 1) { +// String substring = string.substring(string.length()-1); +// if("-".equals(substring)){ +// addName += string.substring(0,string.length()-1); +// } else { +// addName += string; +// } +// } + String string = list.get(j).get(3); + addName += string; + // *结束 + } + } + + } else { + if(idtextEnd.get(eleL.get(i).get(0)).getText() != null && + !"".equals(idtextEnd.get(eleL.get(i).get(0)).getText())) { + idName +=idtextEnd.get(eleL.get(i).get(0)).getText(); + } + + } + } + if("".equals(idName)) { + MessageBox.post("请选择类下拉值", "提示", MessageBox.INFORMATION); + return; + } + try { + TCComponentItemType tcItemType = (TCComponentItemType) session.getTypeComponent(itemType); + String newRev = tcItemType.getNewRev(null); + String newId = idName; + TCComponentItem item = new TCComponentItem(); + if(tcItemType.find(newId) != null ) { +// setByPass(false); + MessageBox.post("id重复,请重新选择", "提示", MessageBox.INFORMATION); +// wait.setBool(true); +// wait.interrupt(); + return; + } + // 创建属性之前,先检查属性是否合规 + for(int i=0; i{ + for (List listS : shuxL) { + + if(listS.get(1).equals(k)){ + v.setText(listS.get(4)); + } + } + + }); +// dispose(); + } catch (Exception e1) { +// setByPass(false); +// wait.setBool(true); +// wait.interrupt(); + MessageBox.post("创建失败,请检查属性值是否在该属性类型的可填范围内", "提示", 2); + e1.printStackTrace(); + } + + + }}); + + celButton = new JButton("取消"); + celButton.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + // TODO Auto-generated method stub + dispose(); + }}); + + + JPanel midJPanel = new JPanel(new PropertyLayout(10,10,10,10,10,10)); + int ii=0; + for( ; ii 1 && split[0].equals(str)) { + puid = split[1]; + itemType = split[2]; + } + + } +// System.out.println("puid:" + puid); + if (puid != null) { + try { + TCComponentDataset dataset = (TCComponentDataset) session.stringToComponent(puid); + if (dataset == null) { + return null; + } + TCComponentTcFile[] tcFiles = dataset.getTcFiles(); + if (tcFiles.length != 1) { + MessageBox.post("数据集没有命名引用的文件或文件过多,请检查!", "WARNING", MessageBox.WARNING); + } else { + File fmsFile = tcFiles[0].getFmsFile(); + return fmsFile; + } + } catch (TCException e) { + e.printStackTrace(); + } + } else { + MessageBox.post("未找到首选项[MT_MaterialConfig]或首选项配置错误", "错误", MessageBox.ERROR); + } + return null; + + } + + public void readDoc(Document doc) { + // 读lovs + NodeList nodelist = doc.getElementsByTagName("lovs"); // 获取所有的lovs + if(nodelist == null || nodelist.getLength() == 0) {System.out.println("未读取到lovs,后续可能会出现bug");} + for(int i=0; i> lovList = new ArrayList>(); + NodeList nodelist2 = ele.getElementsByTagName("lov"); + for(int j=0; j ele2List = new ArrayList<>(); + Element ele2 = (Element) nodelist2.item(j); + String name = ele2.getAttribute("name"); + String sublovtype = ele2.getAttribute("sublovtype"); + String lovvalue = ele2.getAttribute("lovvalue"); + String erpclass = ele2.getAttribute("erpclass"); + ele2List.add(name); + ele2List.add(sublovtype); + ele2List.add(lovvalue); + // *2023/5/9修改,xml中的lov增加erpclass属性 + ele2List.add(erpclass); + lovList.add(ele2List); + } + + lovMap.put(eleType, lovList); + + } + + + // 读classes + NodeList classeslist = doc.getElementsByTagName("classes"); // 获取所有的lovs + if(classeslist == null || classeslist.getLength() == 0) {System.out.println("未读取到classes,后续可能会出现bug");} + Element classesEle = (Element) classeslist.item(0); // classes只有一个 + NodeList classlist = classesEle.getElementsByTagName("class"); + for(int j=0; j eleList = new ArrayList<>(); + Element classEle = (Element) classlist.item(j); + String displayname = classEle.getAttribute("displayname"); + String order = classEle.getAttribute("order"); + String islov = classEle.getAttribute("islov"); + String lovtype = classEle.getAttribute("lovtype"); + eleList.add(displayname); + eleList.add(order); + eleList.add(islov); + eleList.add(lovtype); + eleL.add(eleList); + } + + // 读property + NodeList propertylist = doc.getElementsByTagName("property"); + if(propertylist == null || propertylist.getLength() == 0) {System.out.println("未读取到property,后续可能会出现bug");} + for(int j=0; j eleList = new ArrayList<>(); + Element propertylistEle = (Element) propertylist.item(j); + String location = propertylistEle.getAttribute("location"); + String realName = propertylistEle.getAttribute("realName"); + String displayName = propertylistEle.getAttribute("displayName"); + String propertyType = propertylistEle.getAttribute("propertyType"); + String defaultValue = propertylistEle.getAttribute("defaultValue"); + String isMust = propertylistEle.getAttribute("isMust"); + String isLov = propertylistEle.getAttribute("isLov"); + String lovName = propertylistEle.getAttribute("lovName"); + eleList.add(location); + eleList.add(realName); + eleList.add(displayName); + eleList.add(propertyType); + eleList.add(defaultValue); + eleList.add(isMust); + eleList.add(isLov); + eleList.add(lovName); + shuxL.add(eleList); + } + } + + // 获得lov的显示值和真实值 + public Map getLOVs(String lovName) { + Map map = new LinkedHashMap(); + map.put("", ""); + try { + TCComponentListOfValuesType lovType = (TCComponentListOfValuesType) session.getTypeComponent("ListOfValues"); + TCComponentListOfValues[] lov = lovType.find(lovName); + if (lov.length > 0) { + ListOfValuesInfo listOfValues = lov[0].getListOfValues(); +// String[] realval = listOfValues.getStringListOfValues(); + String[] realval = listOfValues.getLOVDisplayValues(); +// try { +// System.out.println("1开始"); +// TCComponentListOfValues[] listOfFilters = listOfValues.getListOfFilters(); +// for(int i=0; i< listOfFilters.length; i++) { +// System.out.println(listOfFilters[i].getStringProperty("object_name")); +// } +// System.out.println("1结束"); +// }catch(Exception e) { +// System.out.println("1错误"); +// } +// +// try { +// System.out.println("2开始"); +// Object[] listOfValues2 = listOfValues.getListOfValues(); +// for(int i=0; i< listOfValues2.length; i++) { +// System.out.println(listOfValues2.toString()); +// } +// System.out.println("2结束"); +// }catch(Exception e) { +// System.out.println("2错误"); +// } + +// try { +// System.out.println("3开始"); +// String[] lovDisplayValues = listOfValues.getLOVDisplayValues(); +// for(int i=0; i< lovDisplayValues.length; i++) { +// System.out.println(lovDisplayValues[i].toString()); +// } +// System.out.println("3结束"); +// }catch(Exception e) { +// System.out.println("3错误"); +// } +// +// try { +// System.out.println("4开始"); +// TCComponentListOfValues[] lovFilters = listOfValues.getLOVFilters(); +// for(int i=0; i< lovFilters.length; i++) { +// System.out.println(lovFilters[i].getStringProperty("object_name")); +// } +// System.out.println("4结束"); +// }catch(Exception e) { +// System.out.println("4错误"); +// } +// +// try { +// System.out.println("5开始"); +// TCComponent[] tagListOfValues = listOfValues.getTagListOfValues(); +// for(int i=0; i< tagListOfValues.length; i++) { +// System.out.println(tagListOfValues[i].getStringProperty("object_name")); +// } +// System.out.println("5结束"); +// }catch(Exception e) { +// System.out.println("5错误"); +// } +// +// try { +// System.out.println("6开始"); +// List values = listOfValues.getValues(); +// for(int i=0; i< values.size(); i++) { +// System.out.println(values.get(i).getStringValue()); +// } +// System.out.println("6结束"); +// }catch(Exception e) { +// System.out.println("6错误"); +// } + + for (int i = 0; i < realval.length; i++) { +// String disval = listOfValues.getDisplayableValue(realval[i]); + map.put(realval[i], realval[i]); + } + } + } catch (TCException e) { + e.printStackTrace(); + } + return map; + } + + // 开旁路 + public void setByPass(boolean val) { + try { + if (userService == null) { + userService = this.session.getUserService(); + } + Object[] obj = new Object[1]; + obj[0] = ""; + if (val) { + userService.call("Connor_set_bypass", obj); + } else { + userService.call("Connor_close_bypass", obj); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + public boolean setData(TCComponent item, int i){ + try { + String string = shuxL.get(i).get(1); // 获取属性值 + String dateType = shuxL.get(i).get(3); + String xianshiZhi = ""; + if(textEnd.get(string) != null) { + xianshiZhi = textEnd.get(string).getText(); + }else if(boxEnd.get(string) != null){ + xianshiZhi = (String) boxEnd.get(string).getSelectedItem(); + }else { + Object[] selectedValues = boxEndArray.get(string).getSelectedValues(); + for(int k=0; k0) { + System.out.println("显示值:" + split.toString()); + TCProperty tcProperty = item.getTCProperty(string); + tcProperty.setStringValueArray(split); + + } else { + + split = new String[]{xianshiZhi}; + System.out.println("显示值:" + split.toString()); + TCProperty tcProperty = item.getTCProperty(string); + tcProperty.setStringValueArray(split); + } + }catch (Exception e2) { + + MessageBox.post("赋值失败,请检查" + shuxL.get(i).get(2) +"是否在该[" + dateType + "]类型的可填范围内或是否是该类型的数据", "提示", 2); + return false; + } + + } else if (dateType.equals("TypedReference")){ + try { + TCTypeService service = session.getTypeService(); + TCComponentType uom = service.getTypeComponent("UnitOfMeasure"); + TCComponent[] uoms = uom.extent(); + Map uomMap = new HashMap(); + if (uoms != null) { + for (int y = 0; y < uoms.length; y++) { + uomMap.put(uoms[y].toString(), uoms[y]); + } + } + TCComponent uomCom = uomMap.get(xianshiZhi); +// item.setStringProperty(string, xianshiZhi); + item.setReferenceProperty("uom_tag", uomCom); + +// System.out.println("显示值:" + xianshiZhi); + }catch (Exception e2) { + MessageBox.post("赋值失败,请检查" + shuxL.get(i).get(2) +"是否在该[" + dateType + "]类型的可填范围内或是否是该类型的数据", "提示", 2); + return false; + } + + } else { + try { + item.setStringProperty(string, xianshiZhi); +// System.out.println("显示值:" + xianshiZhi); + }catch (Exception e2) { + MessageBox.post("赋值失败,请检查" + shuxL.get(i).get(2) +"是否在该[" + dateType + "]类型的可填范围内或是否是该类型的数据", "提示", 2); + return false; + } + + } + return true; + } catch (Exception e1) { +// setByPass(false); +// wait.setBool(true); +// wait.interrupt(); + MessageBox.post("创建失败,请检查属性值是否在该属性类型的可填范围内", "提示", 2); +// e1.printStackTrace(); + return false; + } + + } + + public boolean checkData(int i){ + try { + String string = shuxL.get(i).get(1); // 获取属性值 + String dateType = shuxL.get(i).get(3); + String xianshiZhi = ""; + if(textEnd.get(string) != null) { + xianshiZhi = textEnd.get(string).getText(); + }else if(boxEnd.get(string) != null){ + xianshiZhi = (String) boxEnd.get(string).getSelectedItem(); + }else { + return true; +// Object[] selectedValues = boxEndArray.get(string).getSelectedValues(); +// if(selectedValues == null || selectedValues.length == 0) { +// return false; +// } else { +// return true; +// } + } + if("".equals(xianshiZhi)) { + return true; + } + if(dateType.equals("integer")) { + try { + Integer valueOf = Integer.valueOf(xianshiZhi); + }catch (Exception e2) { + MessageBox.post("创建失败,请检查" + shuxL.get(i).get(2) +"是否在该[" + dateType + "]类型的可填范围内或是否是该类型的数据", "提示", 2); + return false; + } + + } else if (dateType.equals("date")) { + try { + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); + Date date = simpleDateFormat.parse(xianshiZhi); + }catch (Exception e2) { + MessageBox.post("创建失败,请检查" + shuxL.get(i).get(2) +"是否在该[" + dateType + "]类型的可填范围内或是否是该类型的数据", "提示", 2); + return false; + } + + + } else if (dateType.equals("double")){ + try { + Double valueOf = Double.valueOf(xianshiZhi); + }catch (Exception e2) { + MessageBox.post("创建失败,请检查" + shuxL.get(i).get(2) +"是否在该[" + dateType + "]类型的可填范围内或是否是该类型的数据", "提示", 2); + return false; + } + + } else { + try { + String string2 = xianshiZhi; + }catch (Exception e2) { + MessageBox.post("创建失败,请检查" + shuxL.get(i).get(2) +"是否在该[" + dateType + "]类型的可填范围内或是否是该类型的数据", "提示", 2); + return false; + } + + } + return true; + } catch (Exception e1) { +// setByPass(false); +// wait.setBool(true); +// wait.interrupt(); + MessageBox.post("创建失败,请检查属性值是否在该属性类型的可填范围内", "提示", 2); +// e1.printStackTrace(); + return false; + } + + } +} diff --git a/src/com/connor/mdbksplm/creatematter/CreateMatterHandler.java b/src/com/connor/mdbksplm/creatematter/CreateMatterHandler.java new file mode 100644 index 0000000..9579559 --- /dev/null +++ b/src/com/connor/mdbksplm/creatematter/CreateMatterHandler.java @@ -0,0 +1,47 @@ +package com.connor.mdbksplm.creatematter; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; + +import com.teamcenter.rac.aif.AbstractAIFApplication; +import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent; +import com.teamcenter.rac.aifrcp.AIFUtility; +import com.teamcenter.rac.kernel.TCComponent; +import com.teamcenter.rac.kernel.TCComponentGroup; +import com.teamcenter.rac.kernel.TCException; +import com.teamcenter.rac.kernel.TCSession; +import com.teamcenter.rac.util.MessageBox; + +// 2.2物料创建 +public class CreateMatterHandler extends AbstractHandler { + + @Override + public Object execute(ExecutionEvent arg0) throws ExecutionException { + // TODO Auto-generated method stub + AbstractAIFApplication app = AIFUtility.getCurrentApplication(); + TCSession session = (TCSession) app.getSession(); + InterfaceAIFComponent aifcomps= app.getTargetComponent(); + TCComponent component = (TCComponent) aifcomps; + try { + if(component.isTypeOf("Folder")){ + + String groupName = session.getGroup().getStringProperty("full_name"); + String[] split = groupName.split("\\."); + if(split != null && split.length > 0) { + groupName = split[0]; + System.out.println("分组[0]:" + groupName); + } else { + System.out.println("分组:" + groupName); + } + new Thread(new CreateMatterDialog(component, session, groupName)).start(); + } else { + MessageBox.post("请选择文件夹","提示",MessageBox.INFORMATION); + } + } catch (TCException e) { + e.printStackTrace(); + } + return null; + } + +} diff --git a/src/com/connor/mdbksplm/creatematter/MapComboBox.java b/src/com/connor/mdbksplm/creatematter/MapComboBox.java new file mode 100644 index 0000000..dd4ec6d --- /dev/null +++ b/src/com/connor/mdbksplm/creatematter/MapComboBox.java @@ -0,0 +1,33 @@ +package com.connor.mdbksplm.creatematter; + +import java.util.Map; +import javax.swing.JComboBox; +public class MapComboBox extends JComboBox { + private Map map; + public MapComboBox(Map map) { + super(); + this.map = map; + for (Map.Entry entry : map.entrySet()) { + String key = entry.getKey(); + String value = entry.getValue(); + String item = key + " - " + value; + addItem(item); + } +// addActionListener(e -> { +// String selectedItem = (String) getSelectedItem(); +// String[] parts = selectedItem.split(" - "); +// System.out.println("selectedItem:" + selectedItem); +// String key = parts[0]; +// System.out.println("key:" + key); +// setSelectedItem(key); +// }); + + } + public Object getSelectedItem(){ + String selectedItem = (String) super.getSelectedItem();; + String[] parts = selectedItem.split(" - "); + String key = parts[0]; + return key; + } + +} diff --git a/src/com/connor/mdbksplm/creatematter/MultiComboBox.java b/src/com/connor/mdbksplm/creatematter/MultiComboBox.java new file mode 100644 index 0000000..a2d48b6 --- /dev/null +++ b/src/com/connor/mdbksplm/creatematter/MultiComboBox.java @@ -0,0 +1,246 @@ +package com.connor.mdbksplm.creatematter; + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.GridLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import javax.swing.JButton; +import javax.swing.JCheckBox; +import javax.swing.JComponent; +import javax.swing.JPanel; +import javax.swing.JPopupMenu; +import javax.swing.JTextField; +import javax.swing.UIManager; +import javax.swing.plaf.basic.BasicArrowButton; + +/** + * 下拉复选框组件 + * + */ +public class MultiComboBox extends JComponent implements ActionListener { + + private Object[] values; + private MultiPopup popup; + private JTextField editor; + protected JButton arrowButton; + + public MultiComboBox(Object[] value) { + values = value; + initComponent(); + } + + private void initComponent() { + this.setLayout(new BorderLayout()); + popup = new MultiPopup(values); + editor = new JTextField(); + editor.setBackground(Color.WHITE); + editor.setEditable(false); + editor.setPreferredSize(new Dimension(140, 22)); + editor.addActionListener(this); + arrowButton = createArrowButton(); + arrowButton.addActionListener(this); + add(editor, BorderLayout.WEST); + add(arrowButton, BorderLayout.CENTER); + } + + //获取选中的数据 + public Object[] getSelectedValues() { + // *2023/6/26增加描述 + Object[] selectedValues = popup.getSelectedValues(); + String[] subString = new String[selectedValues.length]; + for(int i=0; i 0) { + String value = Arrays.toString(values); + value = value.replace("[", ""); + value = value.replace("]", ""); + value = value.replace(",", ";"); + editor.setText(value); + }else { + editor.setText(""); + } + } + + + @Override + public void actionPerformed(ActionEvent arg0) { + // TODO Auto-generated method stub + if (!popup.isVisible()) { + popup.show(this, 0, getHeight()); + } + } + + protected JButton createArrowButton() { + JButton button = new BasicArrowButton(BasicArrowButton.SOUTH, UIManager.getColor("ComboBox.buttonBackground"), + UIManager.getColor("ComboBox.buttonShadow"), UIManager.getColor("ComboBox.buttonDarkShadow"), + UIManager.getColor("ComboBox.buttonHighlight")); + button.setName("ComboBox.arrowButton"); + return button; + } + + + //内部类MultiPopup + + public class MultiPopup extends JPopupMenu implements ActionListener { + private Object[] values; + private List checkBoxList = new ArrayList(); + private JButton commitButton; + private JButton cancelButton; + + public MultiPopup(Object[] value) { + super(); + values = value; + initComponent(); + } + + private void initComponent() { + JPanel checkboxPane = new JPanel(); + JPanel buttonPane = new JPanel(); + this.setLayout(new BorderLayout()); + for (Object v : values) { + JCheckBox temp = new JCheckBox(v.toString()); + checkBoxList.add(temp); + } + + if (checkBoxList.get(0).getText().equals("全选")) { + checkBoxList.get(0).addItemListener(new ItemListener() { + public void itemStateChanged(ItemEvent e) { + if (checkBoxList.get(0).isSelected()) { + for (int i = 1; i < checkBoxList.size(); i++) { + if (!checkBoxList.get(i).isSelected()) { + checkBoxList.get(i).setSelected(true); + } + } + } else { + for (int i = 1; i < checkBoxList.size(); i++) { + if (checkBoxList.get(i).isSelected()) { + checkBoxList.get(i).setSelected(false); + } + } + } + } + }); + } + + checkboxPane.setLayout(new GridLayout(checkBoxList.size(), 1, 3, 3)); + for (JCheckBox box : checkBoxList) { + checkboxPane.add(box); + } + + commitButton = new JButton("确定"); + commitButton.addActionListener(this); + + cancelButton = new JButton("取消"); + cancelButton.addActionListener(this); + + buttonPane.add(commitButton); + buttonPane.add(cancelButton); + this.add(checkboxPane, BorderLayout.CENTER); + this.add(buttonPane, BorderLayout.SOUTH); + + } + + public void setSelectValues(Object[] values) { + if (values.length > 0) { + for (int i = 0; i < values.length; i++) { + for (int j = 0; j < checkBoxList.size(); j++) { + if (values[i].equals(checkBoxList.get(j).getText())) { + checkBoxList.get(j).setSelected(true); + } + } + } + setText(getSelectedValues()); + } + } + + + public Object[] getSelectedValues() { + List selectedValues = new ArrayList(); + + if (checkBoxList.get(0).getText().equals("全选")) { + if (checkBoxList.get(0).isSelected()) { + for (int i = 1; i < checkBoxList.size(); i++) { + selectedValues.add(values[i]); + } + } else { + for (int i = 1; i < checkBoxList.size(); i++) { + if (checkBoxList.get(i).isSelected()) { + selectedValues.add(values[i]); + } + } + } + } else { + for (int i = 0; i < checkBoxList.size(); i++) { + if (checkBoxList.get(i).isSelected()) { + selectedValues.add(values[i]); + } + } + } + + return selectedValues.toArray(new Object[selectedValues.size()]); + } + + + + @Override + public void actionPerformed(ActionEvent arg0) { + // TODO Auto-generated method stub + Object source = arg0.getSource(); + if (source instanceof JButton) { + JButton button = (JButton) source; + if (button.equals(commitButton)) { + setText(getSelectedValues()); + popup.setVisible(false); + } else if (button.equals(cancelButton)) { + popup.setVisible(false); + } + } + } + + } + + public static String subStringBeforeSecondString(String str1, String str2) { + int index = str1.indexOf(str2); + if (index >= 0) { + return str1.substring(0, index); + } + return str1; + } + +} diff --git a/src/com/connor/mdbksplm/creatematter/MyXmlUtil.java b/src/com/connor/mdbksplm/creatematter/MyXmlUtil.java new file mode 100644 index 0000000..60190f0 --- /dev/null +++ b/src/com/connor/mdbksplm/creatematter/MyXmlUtil.java @@ -0,0 +1,67 @@ +package com.connor.mdbksplm.creatematter; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.StringWriter; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; + +import org.jdom2.Document; +import org.jdom2.JDOMException; +import org.jdom2.input.SAXBuilder; +import org.jdom2.output.Format; +import org.jdom2.output.XMLOutputter; + + +public class MyXmlUtil { + /** + * + * @return Document + * @throws IOException + * @throws JDOMException + */ + public static Document load(InputStream fileurl) throws JDOMException, IOException { + Document document = null; + SAXBuilder reader = new SAXBuilder(); + InputStreamReader read = new InputStreamReader(fileurl); + document = reader.build(read); + return document; + } + + /** + * + * @return + * @throws IOException + * @throws JDOMException + */ + public static String XmlToString(InputStream fileurl) throws IOException, JDOMException { + Document document = null; + document = load(fileurl); + + Format format = Format.getPrettyFormat(); + format.setEncoding("GB2312"); + + StringWriter out = null; + String sReturn = ""; + XMLOutputter outputter = new XMLOutputter(format); + out = new StringWriter(); + outputter.output(document, out); + sReturn = out.toString(); + return sReturn; + } + + public static org.w3c.dom.Document getObject(File file) throws Exception{ + DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance(); + dbf.setIgnoringElementContentWhitespace(true); + DocumentBuilder db=dbf.newDocumentBuilder(); + InputStream is = new FileInputStream(file.getAbsolutePath()); + org.w3c.dom.Document doc=db.parse(is); + return doc; + } + +} diff --git a/src/com/connor/mdbksplm/creatematter/ReadXmlFileToString.java b/src/com/connor/mdbksplm/creatematter/ReadXmlFileToString.java new file mode 100644 index 0000000..238cb7d --- /dev/null +++ b/src/com/connor/mdbksplm/creatematter/ReadXmlFileToString.java @@ -0,0 +1,82 @@ +package com.connor.mdbksplm.creatematter; + +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.DocumentBuilder; +import org.w3c.dom.Document; +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +public class ReadXmlFileToString { + + /* + * 该函数接受三个String类型的参数,分别表示原始字符串、匹配字符串的起始部分和结束部分。函数内部 + * 使用indexOf方法和substring方法来获取原始字符串中所有以s2开头、s3结尾的部分,并将其添加到结 + * 果List中。需要注意的是,函数使用了一个while循环来处理原始字符串中可能存在多个匹配的子串的情况。 + */ + public static List getSubstringList(String s1, String s2, String s3) { + List result = new ArrayList(); + int startIndex = 0; + while (startIndex < s1.length()) { + int beginIndex = s1.indexOf(s2, startIndex); + if (beginIndex < 0) { + break; + } + int endIndex = s1.indexOf(s3, beginIndex + s2.length()); + if (endIndex < 0) { + break; + } + result.add(s1.substring(beginIndex, endIndex + s3.length())); + startIndex = endIndex + s3.length(); + } + return result; + } + + // 和上一个一样,但不包含s2,s3的内容 + public static List getSubstringList2(String s1, String s2, String s3) { + List result = new ArrayList(); + int startIndex = 0; + while (startIndex < s1.length()) { + int beginIndex = s1.indexOf(s2, startIndex); + if (beginIndex < 0) { + break; + } + int endIndex = s1.indexOf(s3, beginIndex + s2.length()); + if (endIndex < 0) { + break; + } + result.add(s1.substring(beginIndex + s2.length(), endIndex)); + startIndex = endIndex + s3.length(); + } + return result; + } + + // 和上上一个函数一样,不过此函数只返回找到的第一个字符串 + public static String getFirstSubstring(String s1, String s2, String s3) { + int beginIndex = s1.indexOf(s2); + if (beginIndex < 0) { + return null; + } + int endIndex = s1.indexOf(s3, beginIndex + s2.length()); + if (endIndex < 0) { + return null; + } + return s1.substring(beginIndex, endIndex + s3.length()); + } + + // 和上一个一样,但不包含s2,s3的内容 + public static String getFirstSubstring2(String s1, String s2, String s3) { + int beginIndex = s1.indexOf(s2); + if (beginIndex < 0) { + return null; + } + beginIndex += s2.length(); + int endIndex = s1.indexOf(s3, beginIndex); + if (endIndex < 0) { + return null; + } + return s1.substring(beginIndex, endIndex); + } + + +} diff --git a/src/com/connor/mdbksplm/dbomtombom/DbomTransitionToMbomCommand.java b/src/com/connor/mdbksplm/dbomtombom/DbomTransitionToMbomCommand.java new file mode 100644 index 0000000..59234ec --- /dev/null +++ b/src/com/connor/mdbksplm/dbomtombom/DbomTransitionToMbomCommand.java @@ -0,0 +1,285 @@ +package com.connor.mdbksplm.dbomtombom; + +import java.util.ArrayList; + +import org.jdesktop.swingx.treetable.DefaultMutableTreeTableNode; + +import com.teamcenter.rac.aif.AbstractAIFCommand; +import com.teamcenter.rac.aif.kernel.AIFComponentContext; +import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent; +import com.teamcenter.rac.kernel.TCComponent; +import com.teamcenter.rac.kernel.TCComponentBOMLine; +import com.teamcenter.rac.kernel.TCComponentItem; +import com.teamcenter.rac.kernel.TCComponentItemRevision; +import com.teamcenter.rac.kernel.TCException; +import com.teamcenter.rac.kernel.TCProperty; +import com.teamcenter.rac.kernel.TCSession; +import com.teamcenter.rac.util.MessageBox; + +public class DbomTransitionToMbomCommand extends AbstractAIFCommand { + + private InterfaceAIFComponent comp; + private TCSession session; + private TCComponentBOMLine bomLine = null; + static ArrayList preList = new ArrayList(); + + public DbomTransitionToMbomCommand(InterfaceAIFComponent comp, TCSession session) { + // TODO Auto-generated constructor stub + this.comp = comp; + this.session = session; + } + + @Override + public void executeModal() throws Exception { + // TODO Auto-generated method stub +// TCComponentType compType = session.getTypeComponent("ML8_Washing"); +// String[] allProperties=compType.getPropertyNames();//获取类所有属性 + //TCProperty[] allProperties=compType.getPropertyNames();//获取类所有属性 + + //获取选中的对象 + if(!(comp instanceof TCComponentBOMLine)) + { + MessageBox.post("请在结构管理器中选中BOMLine对象!", "错误", MessageBox.ERROR); + return; + } + //System.out.println("11111111111"); + bomLine = (TCComponentBOMLine) comp; + + //判断对象类型 + TCComponentItem item = bomLine.getItem(); + boolean isTypeof=false; + String[] prefValues = session.getPreferenceService().getStringValues("Connor_DBOM_Type"); //Connor_DBOM_Type + System.out.println("prefValuse"+prefValues.toString()); + for(String pref : prefValues) { + if(pref.equals(item.getType())) { + isTypeof = true; + } + } + + if(!isTypeof) { + MessageBox.post("请选择Connor_DBOM_Type首选项中配置的对象类型","提示",2); + return; + } + System.out.println(item.getType()); +// if(!item.getType().equals("ML8_Design")) +// { +// MessageBox.post("请选中设计对象!", "错误", MessageBox.ERROR); +// return; +// } + //final List> bomPropertyList = this.getBomPropertys(session, bomLine); + + + String[] prefValueParts = session.getPreferenceService().getStringValues("Connor_DBOM_PartType"); + for (String string : prefValueParts) { + preList.add(string); + } + + final DefaultMutableTreeTableNode node = this.getBomPropertyToNode(session, bomLine); + + + new Thread() { + @Override + public void run() { + DbomTransitionToMbomDialog dialog = new DbomTransitionToMbomDialog( + comp, session,node,preList); + } + }.start(); + super.executeModal(); + } + + /** + * 获取BOM属性 + * @throws TCException + */ + public static DefaultMutableTreeTableNode getBomPropertyToNode(TCSession session, TCComponentBOMLine topBomLine) throws TCException { + // TODO Auto-generated method stub + + NodeBean nodeBean = new NodeBean(); + + //String ss = subline.getStringProperty("bl_indented_title"); + //对象ID + nodeBean.setDbom("顶层"); + nodeBean.setEbom(""); + nodeBean.setEbomId(""); + nodeBean.setNum(""); + nodeBean.setLabel(""); + nodeBean.setRefreshStatus(""); + nodeBean.setParentString(""); + + DefaultMutableTreeTableNode rootNode = new DefaultMutableTreeTableNode(nodeBean); + //获取BOM + try { + //getRepresentationPropertysToNode(topBomLine, rootNode, ""); + getBomPropertysToNode(topBomLine, rootNode, ""); + return rootNode; + } catch (Exception e) { + // TODO: handle exception + e.printStackTrace(); + } + return null; + } + /*** + * 获取表示下的对象 + * @param bomLine + * @param rootNode + * @param parentID + * @throws TCException + */ + public static void getRepresentationPropertysToNode(TCComponentBOMLine bomLine, DefaultMutableTreeTableNode rootNode,String parentID,String quantity) throws TCException + { + TCComponentItemRevision itemRevision = bomLine.getItemRevision(); + //刷新表示关系 + //TCComponent referenceProperty = itemRevision.getReferenceProperty("representation_for"); + //referenceProperty.refresh(); + //获取表示关系下的对象 + itemRevision.refresh(); + TCComponent[] tcComponents = itemRevision.getReferenceListProperty("representation_for"); + for (TCComponent tcComponent : tcComponents) { + + TCProperty refreshStatusProperty = tcComponent.getTCProperty("release_status_list"); + TCComponent[] refreshStatus = refreshStatusProperty.getReferenceValueArray(); + TCProperty processProperty = tcComponent.getTCProperty("process_stage_list"); + TCComponent[] processStage = processProperty.getReferenceValueArray(); + + NodeBean nodeBean = new NodeBean(); + + nodeBean.setDbom(""); + nodeBean.setEbom(tcComponent.getStringProperty("object_string")); + nodeBean.setEbomId(tcComponent.getStringProperty("item_id")); + // * +// nodeBean.setEbomDesc(tcComponent.getStringProperty("ld6_materialDesc"));s + nodeBean.setEbomDesc(tcComponent.getStringProperty("object_string")); + nodeBean.setNum(quantity); + nodeBean.setLabel("0"); + if(refreshStatus.length > 0) + { + StringBuffer stringBuffer = new StringBuffer(); + //添加发布状态 + for (int i = 0; i < refreshStatus.length; i++) { + stringBuffer.append(refreshStatus[i].toString()); + if(i < refreshStatus.length - 1) + { + stringBuffer.append(","); + } + } + nodeBean.setRefreshStatus(stringBuffer.toString()); + } + else if(processStage.length > 0) + { + nodeBean.setRefreshStatus("流程中"); + } + else + { + nodeBean.setRefreshStatus(""); + } + nodeBean.setParentString(itemRevision.getStringProperty("object_string")); + + DefaultMutableTreeTableNode node = new DefaultMutableTreeTableNode(nodeBean); + rootNode.add(node); + + if(tcComponents.length == 1) + { + if(getTopRefresh(node)) + { + nodeBean.setLabel("0"); + } + else + { + nodeBean.setLabel("1"); + } + } + } + } + /*** + * 判断上级是否勾选已发布对象 + * @param node + * @return + */ + private static boolean getTopRefresh(DefaultMutableTreeTableNode node) + { + boolean result = false; + + //判断上层是否勾选已发布的对象 + DefaultMutableTreeTableNode parentNode = (DefaultMutableTreeTableNode) node.getParent(); + if(parentNode != null) + { + DefaultMutableTreeTableNode rootNode = (DefaultMutableTreeTableNode) parentNode.getParent(); + if(rootNode != null) + { + for (int i = 0; i < rootNode.getChildCount(); i++) { + DefaultMutableTreeTableNode childNode = (DefaultMutableTreeTableNode) rootNode.getChildAt(i); + NodeBean childBean = (NodeBean) childNode.getUserObject(); + if(childBean.getLabel().equals("1") && childBean.getRefreshStatus().indexOf("发布") >= 0) + { + //MessageBox.post("上层["+childBean.getEbom()+"]已勾选发布的对象,下层不允许勾选!", "错误", MessageBox.ERROR); + return true; + } + else + { + return getTopRefresh(childNode); + } + } + } + } + + return result; + } + + + /** + * 获取BOM信息 + * @param bomLine + * @param bomPropertyList + * @param parentID + */ + public static void getBomPropertysToNode(TCComponentBOMLine bomLine, DefaultMutableTreeTableNode rootNode,String parentID) + { + try { + + NodeBean nodeBean = new NodeBean(); + try { + System.out.println(bomLine.getStringProperty("bl_item_object_string") + " : " + + bomLine.getStringProperty("bl_item_object_type")); + }catch (Exception ee) { + System.out.println("有问题"); + } + + if(bomLine.getStringProperty("bl_item_object_type").equals("LD6_3Ddesign")) { + return; + } + nodeBean.setDbom(bomLine.getStringProperty("bl_item_object_string")); + nodeBean.setNum(bomLine.getStringProperty("bl_quantity")); + nodeBean.setEbom(""); + nodeBean.setEbomId(""); + if(preList.contains(bomLine.getStringProperty("bl_item_object_type"))) { + nodeBean.setLabel("0"); + }else { + nodeBean.setLabel(""); + } + + nodeBean.setRefreshStatus(""); + nodeBean.setParentString(""); + + DefaultMutableTreeTableNode node = new DefaultMutableTreeTableNode(nodeBean); + rootNode.add(node); + + + getRepresentationPropertysToNode(bomLine, node,bomLine.getStringProperty("bl_item_item_id"),bomLine.getStringProperty("bl_quantity")); + + if(bomLine.getChildren().length > 0) + { + AIFComponentContext aif[] = bomLine.getChildren(); + for (int i = 0; i < aif.length; i++) + { + TCComponentBOMLine subline = (TCComponentBOMLine) aif[i] + .getComponent(); + + getBomPropertysToNode(subline, node,bomLine.getStringProperty("bl_item_item_id")); + } + } + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } +} diff --git a/src/com/connor/mdbksplm/dbomtombom/DbomTransitionToMbomDialog.java b/src/com/connor/mdbksplm/dbomtombom/DbomTransitionToMbomDialog.java new file mode 100644 index 0000000..ab36638 --- /dev/null +++ b/src/com/connor/mdbksplm/dbomtombom/DbomTransitionToMbomDialog.java @@ -0,0 +1,738 @@ +package com.connor.mdbksplm.dbomtombom; + +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.awt.Font; +import java.awt.Robot; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.KeyEvent; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; + +import javax.swing.JButton; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.ListSelectionModel; +import javax.swing.table.DefaultTableModel; +import javax.swing.tree.TreePath; + +import org.jdesktop.swingx.decorator.HighlighterFactory; +import org.jdesktop.swingx.treetable.DefaultMutableTreeTableNode; + +import com.teamcenter.rac.aif.AbstractAIFDialog; +import com.teamcenter.rac.aif.kernel.AIFComponentContext; +import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent; +import com.teamcenter.rac.kernel.TCComponent; +import com.teamcenter.rac.kernel.TCComponentBOMLine; +import com.teamcenter.rac.kernel.TCComponentBOMWindow; +import com.teamcenter.rac.kernel.TCComponentBOMWindowType; +import com.teamcenter.rac.kernel.TCComponentItem; +import com.teamcenter.rac.kernel.TCComponentItemRevision; +import com.teamcenter.rac.kernel.TCComponentItemType; +import com.teamcenter.rac.kernel.TCException; +import com.teamcenter.rac.kernel.TCSession; +import com.teamcenter.rac.util.MessageBox; +//import com.teamcenter.soa.exceptions.NotLoadedException; + +public class DbomTransitionToMbomDialog extends AbstractAIFDialog implements +ActionListener, MouseListener { + + private TCSession session; + private InterfaceAIFComponent comp; + //private InterfaceAIFComponent comp;//获取选中的对象 + + private List isNotEditableRow = new ArrayList(); + //private TCComponentBOMLine bomLine; + private DefaultMutableTreeTableNode node; + + private String[] header = new String[] { "DBOM对象", "MBOM对象","选中", "MBOMID", "物料描述","数量","发布状态","对应父节点"}; + + private JPanel titlePanel; + private JLabel titleLabel; + private JTreeTable table; + private JTreeTableModel map; + + private JPanel rootPanel; + private JButton okButton; + private JButton celButton; + private JButton refreshButton; + private ArrayList preList; + + public DbomTransitionToMbomDialog(InterfaceAIFComponent comp,TCSession session, + DefaultMutableTreeTableNode node,ArrayList preList) { + // TODO Auto-generated constructor stub + super(false); + this.session = session; + this.comp = comp; + this.node = node; + this.preList = preList; + init(); + } + + private void init() { + // TODO Auto-generated method stub + this.setTitle("DBOM转MBOM"); + this.setPreferredSize(new Dimension(800,600)); + // 初始化标题部分控件 + this.titlePanel = new JPanel(); + this.titleLabel = new JLabel("DBOM转MBOM"); + this.titleLabel.setFont(new Font("宋体", 1, 18)); + this.titlePanel.add(titleLabel); + + JPanel panel = new JPanel(); + panel.add(this.titlePanel,BorderLayout.NORTH); + + this.table = getJTreeTable(null, null, header, null); + + this.table.addMouseListener(this); + //Adapter adapter = new Adapter(table); + + this.rootPanel = new JPanel(new FlowLayout()); + this.okButton = new JButton("确认"); + this.celButton = new JButton("取消"); + this.refreshButton = new JButton("刷新"); + + this.rootPanel.add(okButton); + this.rootPanel.add(celButton); + this.rootPanel.add(refreshButton); + //this.rootPanel.add(celValueButton); + + // 添加鼠标监听 + this.createActionEvent(); + this.setLayout(new BorderLayout()); + // this.add(centerPanel, BorderLayout.NORTH); + this.add(panel, BorderLayout.NORTH); + this.add(new JScrollPane(this.table), BorderLayout.CENTER); + // dialog.add(tablePanel, BorderLayout.CENTER); + this.add(rootPanel, BorderLayout.SOUTH); + //this.setAlwaysOnTop(true); + this.pack(); + this.setLocationRelativeTo(null); + this.show(); + } + + //添加监听 + public void createActionEvent() { + this.okButton.addActionListener(this); + this.celButton.addActionListener(this); + this.refreshButton.addActionListener(this); + //this.celValueButton.addActionListener(this); + } + + //Jtable通用方法 + public JTreeTable getJTreeTable(JTreeTable partsTable, DefaultTableModel dtm, + Object[] titleNames, Object[][] values) { + int simpleLen = 100; + int totleLen = 1500; + if (partsTable == null) { + this.map = new JTreeTableModel(this.node); + this.map.setIsNotEditableRow(this.isNotEditableRow); + //map.setColumnIdentifiers(titleNames); + + partsTable = new JTreeTable(map); + partsTable.setIsNotEditableRow(this.isNotEditableRow); + partsTable.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); + // partsTable.setRowHeight(1, 50); + // partsTable.setRowHeight(2, 100); + partsTable.setRowHeight(30); + partsTable.expandAll(); // 展开全部节点 + // 隐藏列 +// partsTable.HiddenCell(0); + + partsTable.getColumnModel().getColumn(0).setPreferredWidth(188); // 设置第一列宽度 + partsTable.getColumnModel().getColumn(1).setPreferredWidth(150); // 设置第二列宽度 + partsTable.getColumnModel().getColumn(2).setPreferredWidth(55); // 设置第三列宽度 + + partsTable.setHighlighters(HighlighterFactory.createSimpleStriping()); + + if (simpleLen * titleNames.length >= totleLen) { + for (int i = 0; i < titleNames.length; i++) { + partsTable.getColumnModel().getColumn(i) + .setPreferredWidth(simpleLen); + } + partsTable.setAutoResizeMode(0); + } else { + partsTable.setAutoResizeMode(1); + } + } + return partsTable; + } + + @Override + public void mouseClicked(MouseEvent e) { + // TODO Auto-generated method stub + if(e.getClickCount() == 2) + { + TreePath treePath = table.getPathForLocation(e.getX(),e.getY()); + if (treePath != null) { + DefaultMutableTreeTableNode node = (DefaultMutableTreeTableNode) treePath.getLastPathComponent(); + NodeBean nodeBean = (NodeBean) node.getUserObject(); + String itemId = nodeBean.getDbom(); + if(itemId != null && !itemId.isEmpty()) + { + try { + //获取对象 + TCComponentItemType itemType = (TCComponentItemType) this.session.getTypeComponent("Item"); + TCComponentItem item = itemType.find(itemId.split("-")[0]); + + com.teamcenter.rac.common.Activator + .getDefault() + .openPerspective( + "com.teamcenter.rac.ui.perspectives.navigatorPerspective"); + com.teamcenter.rac.common.Activator + .getDefault() + .openComponents( + "com.teamcenter.rac.ui.perspectives.navigatorPerspective", + new InterfaceAIFComponent[] { item }); + } catch (Exception e2) { + // TODO: handle exception + e2.printStackTrace(); + } + } + } + } + else if (e.getClickCount() > 0) + { + // 获得选中列 + int selectColumn = table.getTableHeader().columnAtPoint(e.getPoint()); + + if(selectColumn != 2) + { + return; + } + + TreePath treePath = table.getPathForLocation(e.getX(),e.getY()); + if (treePath != null) { + DefaultMutableTreeTableNode node = (DefaultMutableTreeTableNode) treePath.getLastPathComponent(); + NodeBean nodeBean = (NodeBean) node.getUserObject(); + + if(getTopRefresh(node)) + { + MessageBox.post("上层已勾选发布的对象,下层不允许勾选!", "错误", MessageBox.ERROR); + return; + } + + if(getTopProcessRefresh(node)) + { + MessageBox.post("上层已勾选流程中的对象,下层不允许勾选!", "错误", MessageBox.ERROR); + return; + } + + DefaultMutableTreeTableNode parentNode = (DefaultMutableTreeTableNode) node.getParent(); + if(parentNode != null) + { + DefaultMutableTreeTableNode rootNode = (DefaultMutableTreeTableNode) parentNode.getParent(); + NodeBean rootNodeBean = (NodeBean) rootNode.getUserObject(); + + + if(!rootNodeBean.getDbom().equals("顶层") && !getTop(node) && nodeBean.getLabel().equals("0") ) + { + MessageBox.post("上层未勾选对象,下层不允许勾选!", "错误", MessageBox.ERROR); + return; + } + } + + + try { +// TCComponentItemType itemType = (TCComponentItemType) session +// .getTypeComponent("Item"); + + if(nodeBean.getLabel().equals("0")) + { + //判断同一层是否已勾选 + if(parentNode != null) + { + for (int i = 0; i < parentNode.getChildCount(); i++) { + DefaultMutableTreeTableNode childNode = (DefaultMutableTreeTableNode) parentNode.getChildAt(i); + NodeBean childBean = (NodeBean) childNode.getUserObject(); + if(childBean.getLabel().equals("1") && !childBean.getEbom().isEmpty() && !nodeBean.getEbom().isEmpty()) + { + MessageBox.post("同一层级只允许选中一个!", "错误", MessageBox.ERROR); + return; + } + } + + } + + nodeBean.setLabel("1"); + //isHaveBom(node, nodeBean.getEbomId(), "1", itemType); + } + else if(nodeBean.getLabel().equals("1")) + { + nodeBean.setLabel("0"); + //isHaveBom(node, nodeBean.getEbomId(), "0", itemType); + } + Robot robot = new Robot(); + robot.keyPress(KeyEvent.VK_TAB); + robot.keyRelease(KeyEvent.VK_TAB); + } catch (Exception e2) { + // TODO: handle exception + e2.printStackTrace(); + } + } + } + } + + /*** + * 判断上级是否勾选 + * @param node + * @return + * @throws TCException + */ + private void isHaveBom(DefaultMutableTreeTableNode node,String parentID,String status,TCComponentItemType itemType) throws TCException + { + TCComponentItem item = itemType.find(parentID); + TCComponentItemRevision itemRevision = item.getLatestItemRevision(); + + TCComponent[] tcComponents = itemRevision.getReferenceListProperty("view"); + if(tcComponents.length > 0) + { + for (int ii = 0; ii < node.getParent().getChildCount(); ii++) { + DefaultMutableTreeTableNode tableNode = (DefaultMutableTreeTableNode)node.getParent().getChildAt(ii); + + if(tableNode.getChildCount() > 0) + { + for (int i = 0; i < tcComponents.length; i++) { + TCComponent childBomLine = tcComponents[i]; + List haveItemID = new ArrayList(); + for (int j = 0; j < tableNode.getChildCount(); j++) { + String childItemId = childBomLine.getStringProperty("item_id"); + NodeBean childNodeBean = (NodeBean) tableNode.getChildAt(j).getUserObject(); + if(childItemId.equals(childNodeBean.getEbomId()) && !haveItemID.contains(childNodeBean.getEbomId())) + { + haveItemID.add(childNodeBean.getEbomId()); + childNodeBean.setLabel(status); + isHaveBom((DefaultMutableTreeTableNode)(tableNode.getChildAt(j)), childNodeBean.getEbomId(), status, itemType); + } + } + } + } + } + } + } + + /*** + * 判断上级是否勾选 + * @param node + * @return + */ + private boolean getTop(DefaultMutableTreeTableNode node) + { + boolean result = false; + + //判断上层是否勾选已发布的对象 + DefaultMutableTreeTableNode parentNode = (DefaultMutableTreeTableNode) node.getParent(); + if(parentNode != null) + { + DefaultMutableTreeTableNode rootNode = (DefaultMutableTreeTableNode) parentNode.getParent(); + if(rootNode != null) + { + for (int i = 0; i < rootNode.getChildCount(); i++) { + DefaultMutableTreeTableNode childNode = (DefaultMutableTreeTableNode) rootNode.getChildAt(i); + NodeBean childBean = (NodeBean) childNode.getUserObject(); + if(childBean.getLabel().equals("1") && !childBean.getEbom().isEmpty()) + { + //MessageBox.post("上层["+childBean.getEbom()+"]已勾选发布的对象,下层不允许勾选!", "错误", MessageBox.ERROR); + return true; + } + } + } + } + + return result; + } + + /*** + * 判断上级是否勾选已发布对象 + * @param node + * @return + */ + private boolean getTopRefresh(DefaultMutableTreeTableNode node) + { + boolean result = false; + + //判断上层是否勾选已发布的对象 + DefaultMutableTreeTableNode parentNode = (DefaultMutableTreeTableNode) node.getParent(); + if(parentNode != null) + { + DefaultMutableTreeTableNode rootNode = (DefaultMutableTreeTableNode) parentNode.getParent(); + if(rootNode != null) + { + for (int i = 0; i < rootNode.getChildCount(); i++) { + DefaultMutableTreeTableNode childNode = (DefaultMutableTreeTableNode) rootNode.getChildAt(i); + NodeBean childBean = (NodeBean) childNode.getUserObject(); + if(childBean.getLabel().equals("1") && !childBean.getRefreshStatus().equals("属性发布") && !childBean.getRefreshStatus().isEmpty()) + { + result = true; + break; + } + else + { + if(getTopRefresh(childNode)) + { + result = true; + break; + } + } + } + } + } + + return result; + } + + /*** + * 判断上级是否勾选流程中对象 + * @param node + * @return + */ + private boolean getTopProcessRefresh(DefaultMutableTreeTableNode node) + { + boolean result = false; + + //判断上层是否勾选已发布的对象 + DefaultMutableTreeTableNode parentNode = (DefaultMutableTreeTableNode) node.getParent(); + if(parentNode != null) + { + DefaultMutableTreeTableNode rootNode = (DefaultMutableTreeTableNode) parentNode.getParent(); + if(rootNode != null) + { + for (int i = 0; i < rootNode.getChildCount(); i++) { + DefaultMutableTreeTableNode childNode = (DefaultMutableTreeTableNode) rootNode.getChildAt(i); + NodeBean childBean = (NodeBean) childNode.getUserObject(); + if(childBean.getLabel().equals("1") && childBean.getRefreshStatus().equals("流程中")) + { + result = true; + break; + } + else + { + if(getTopProcessRefresh(childNode)) + { + result = true; + break; + } + } + } + } + } + + return result; + } + + @Override + public void mousePressed(MouseEvent e) { + // TODO Auto-generated method stub + + } + + @Override + public void mouseReleased(MouseEvent e) { + // TODO Auto-generated method stub + + } + + @Override + public void mouseEntered(MouseEvent e) { + // TODO Auto-generated method stub + + } + + @Override + public void mouseExited(MouseEvent e) { + // TODO Auto-generated method stub + + } + + @Override + public void actionPerformed(ActionEvent e) { + // TODO Auto-generated method stub + Object source = e.getSource(); + if (source.equals(this.okButton)) + { + //获取选中的MBOM对象 + try { + //MethodUtil.openByPass(session); + TCComponentItemType itemType = (TCComponentItemType) session + .getTypeComponent("Item"); + this.adaptiveVariants((DefaultMutableTreeTableNode)(this.node.getChildAt(0)), itemType,true); + //MethodUtil.closeByPass(session); + MessageBox.post("转换成功!", "成功", MessageBox.INFORMATION); + } catch (TCException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + } + else if(source.equals(this.refreshButton)) + { + this.dispose(); + try { + DbomTransitionToMbomCommand command = new DbomTransitionToMbomCommand(comp,session); + command.executeModal(); + } catch (Exception e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + } + else + { + this.dispose(); + } + } + + TCComponentBOMLine resultTopline = null; + /** + * 重新搭建BOM + * + * @param topItem + * @throws TCException + */ + private void adaptiveVariants(DefaultMutableTreeTableNode tableNode,TCComponentItemType itemType,boolean ifCreate) throws TCException + { + TCComponentItem topItem = null; + //存放id相同时,更新数量 + LinkedHashMap countMap = new LinkedHashMap(); + ArrayList itemList = new ArrayList(); + Map itemNumMap = new HashMap(); + System.out.println("当前tableNode为:" + tableNode.toString()); + for (int i = 0; i < tableNode.getChildCount(); i++) { + DefaultMutableTreeTableNode childNode = (DefaultMutableTreeTableNode) tableNode.getChildAt(i); + NodeBean childBean = (NodeBean) childNode.getUserObject(); + // * + if(childBean.getLabel().equals("1") && !childBean.getEbom().isEmpty()) + { + topItem = itemType.find(childBean.getEbomId()); + for (int j = 0; j < tableNode.getChildCount(); j++) { + DefaultMutableTreeTableNode node = (DefaultMutableTreeTableNode) tableNode.getChildAt(j); + if(ifCreate) { + NodeBean childBean2 = (NodeBean) node.getUserObject(); + String dbom = childBean2.getDbom(); + System.out.println("dbom为:" + dbom); + if(!dbom.isEmpty()) { + String id = ""; + if(dbom.contains("-")) { +// dbom.lastIndexOf("-"); + id = dbom.substring(0, dbom.lastIndexOf("-")); + }else { + id = dbom; + } + TCComponentItem createItem = itemType.find(id); + if(childBean2.getLabel() == null) { + System.out.println("lable空"); + } + if(createItem == null) { + System.out.println("createItem空,id:" + id); + } else { + System.out.println("childBean2.getLabel():" + childBean2.getLabel()); + System.out.println("preList.contains(createItem.getType()):" + preList.contains(createItem.getType())); + if(childBean2.getLabel().equals("1") && preList.contains(createItem.getType())) { + System.out.println("child id material ===>"+id); + System.out.println("parent id MBOM ===>"+childBean.getEbomId()); + String num = childBean2.getNum(); + if(num == null || num.isEmpty() || num.equals("0")) { + num = "1"; + } + if(countMap.containsKey(createItem.getLatestItemRevision())) { + Integer integer = countMap.get(createItem.getLatestItemRevision()); + countMap.put(createItem.getLatestItemRevision(), Integer.parseInt(num) + integer); + }else { + countMap.put(createItem.getLatestItemRevision(), Integer.parseInt(num)); + } + } + } + + } + } + for (int k = 0; k < node.getChildCount(); k++) { + System.out.println("进入迭代"); + DefaultMutableTreeTableNode childTableNode = (DefaultMutableTreeTableNode) node.getChildAt(k); + NodeBean childNodeBean = (NodeBean) childTableNode.getUserObject(); + System.out.println("childNodeBean.getLabel():" + childNodeBean.getLabel()); + if(childNodeBean.getLabel().equals("1")) + { + TCComponentItem item = null; + if(childNodeBean.getEbomId() == null || childNodeBean.getEbomId().isEmpty()) { + String dbom = childNodeBean.getDbom(); + String id = ""; + if(dbom.contains("-")) { + id = dbom.substring(0, dbom.lastIndexOf("-")); + }else { + id = dbom; + } + item = itemType.find(id); + }else { + item = itemType.find(childNodeBean.getEbomId()); + } + System.out.println("item:" + item.getStringProperty("object_string")); + if(!preList.contains(item.getType())){ + continue; + } + String num = childNodeBean.getNum(); + if(num == null || num.isEmpty() || num.equals("0")) { + num = "1"; + } + if(countMap.containsKey(item.getLatestItemRevision())) { + Integer integer = countMap.get(item.getLatestItemRevision()); + countMap.put(item.getLatestItemRevision(), Integer.parseInt(num) + integer); + }else { + countMap.put(item.getLatestItemRevision(), Integer.parseInt(num)); + } + itemList.add(item.getLatestItemRevision()); + itemNumMap.put(item.getStringProperty("item_id"), childNodeBean.getNum()); + if(childNodeBean.getRefreshStatus().equals("属性发布") || childNodeBean.getRefreshStatus().equals("")) + { + adaptiveVariants((DefaultMutableTreeTableNode)(childTableNode.getParent()), itemType,true); + } + } + + } + } + } + } + if(topItem != null) + { + System.out.println("topItem不为空:" + topItem.getStringProperty("object_string")); + resultTopline = null; + this.recreateBom(topItem.getLatestItemRevision(), itemList, true,countMap); + if(resultTopline != null) + { + System.out.println("resultTopline不为空:" + resultTopline.getStringProperty("object_string")); + resultTopline.lock(); + //设置BOM行属性 + System.out.println("Children长度为:" + resultTopline.getChildren().length); + for (int j = 0; j < resultTopline.getChildren().length; j++) { + System.out.println("循环到:" + j); + TCComponentBOMLine bomLine = (TCComponentBOMLine) resultTopline.getChildren()[j].getComponent(); + if(countMap.containsKey(bomLine.getItemRevision())) { + System.out.println("进入countMap.containsKey"); + bomLine.setStringProperty("bl_quantity", String.valueOf(countMap.get(bomLine.getItemRevision()))); + } + if(itemNumMap.keySet().contains((bomLine.getStringProperty("bl_item_item_id")))) + { + System.out.println("进入itemNumMap.keySet"); + String quantity = itemNumMap.get(bomLine.getStringProperty("bl_item_item_id")); + if(quantity == null || quantity.isEmpty() || quantity.equals("0")) + { + System.out.println("进入quantity == null"); + String uom = ""; + try { + uom = bomLine.getPropertyDisplayableValue("bl_uom"); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + System.out.println("单位:++++++++++++++++"+uom); + if(uom.equals("每个")) + { + continue; + } + quantity = "1.00"; + } + System.out.println("数量:++++++++++++++++"+quantity); + if(quantity.indexOf(".") > 0) + { + Double bomNum = Double.parseDouble(quantity); + bomLine.setStringProperty("bl_quantity", bomNum.toString()); + } + else + { + Integer bomNum = Integer.parseInt(quantity); + bomLine.setStringProperty("bl_quantity", bomNum.toString()); + } + //bomLine.setStringProperty("bl_quantity", itemNumMap.get(bomLine.getStringProperty("bl_item_item_id"))); + } + + } + resultTopline.save(); + resultTopline.unlock(); + resultTopline.refresh(); + if(resultTopline.getBOMView() != null) + { + resultTopline.getBOMView().save(); + resultTopline.getBOMView().refresh(); + } + } + } + } + + /** + * 重新搭建BOM + * + * @param item + * @param itemlists + * @throws TCException + */ + public void recreateBom(TCComponentItemRevision topItemRev,ArrayList itemRevisionlists, + boolean isDelete,HashMap countMap) + throws TCException { + TCComponentBOMWindow bomWindow = null; + try { + TCComponentBOMWindowType bomWindowType = (TCComponentBOMWindowType) session + .getTypeComponent("BOMWindow"); + bomWindow = bomWindowType.create(null); + TCComponentBOMLine topline = bomWindow.setWindowTopLine(topItemRev.getItem(), + topItemRev, null, null); + resultTopline = topline; + bomWindow.lock(); + topline.lock(); + if (isDelete) { + if (topline.hasChildren()) { + System.out.println("topline有Children"); + AIFComponentContext[] childrens = topline.getChildren(); + for (AIFComponentContext children : childrens) { + System.out.println("Children:" + ((TCComponentBOMLine) children.getComponent()).getStringProperty("object_string")); + ((TCComponentBOMLine) children.getComponent()).cut(); + } + } + } +// for (TCComponentItemRevision n_itemRevision : itemRevisionlists) { +// if(n_itemRevision != null) +// { +// boolean isHave = false; +// if(!isDelete) +// { +// for (AIFComponentContext children : topline.getChildren()) { +// if(n_itemRevision.getStringProperty("item_id").compareTo(children.getComponent().getProperty("bl_child_id")) == 0) +// { +// isHave = true; +// } +// } +// } +// if(!isHave) +// { +// topline.add(n_itemRevision.getItem(), n_itemRevision, null, false, ""); +// } +// } +// } + Set> entrySet = countMap.entrySet(); + for (Entry entry : entrySet) { + topline.add(entry.getKey().getItem(), entry.getKey(), null, false, ""); + } + topline.save(); + topline.unlock(); + topline.refresh(); + if(topline.getBOMView() != null) + { + topline.getBOMView().save(); + topline.getBOMView().refresh(); + } + } catch (Exception e) { + // TODO: handle exception + e.printStackTrace(); + } + bomWindow.save(); + bomWindow.unlock(); + bomWindow.refresh(); + } + +} diff --git a/src/com/connor/mdbksplm/dbomtombom/DbomTransitionToMbomHandler.java b/src/com/connor/mdbksplm/dbomtombom/DbomTransitionToMbomHandler.java new file mode 100644 index 0000000..c034341 --- /dev/null +++ b/src/com/connor/mdbksplm/dbomtombom/DbomTransitionToMbomHandler.java @@ -0,0 +1,30 @@ +package com.connor.mdbksplm.dbomtombom; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; + + +import com.teamcenter.rac.aif.AbstractAIFApplication; +import com.teamcenter.rac.aifrcp.AIFUtility; +import com.teamcenter.rac.kernel.TCSession; + +public class DbomTransitionToMbomHandler extends AbstractHandler { + + @Override + public Object execute(ExecutionEvent arg0) throws ExecutionException { + // TODO Auto-generated method stub + AbstractAIFApplication app = AIFUtility.getCurrentApplication(); + TCSession session = (TCSession) app.getSession(); + try { + DbomTransitionToMbomCommand command = new DbomTransitionToMbomCommand(app.getTargetComponent(),session); + command.executeModal(); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return null; + } + + +} diff --git a/src/com/connor/mdbksplm/dbomtombom/JTreeTable.java b/src/com/connor/mdbksplm/dbomtombom/JTreeTable.java new file mode 100644 index 0000000..aea12e9 --- /dev/null +++ b/src/com/connor/mdbksplm/dbomtombom/JTreeTable.java @@ -0,0 +1,85 @@ +package com.connor.mdbksplm.dbomtombom; + +import java.awt.event.MouseEvent; +import java.util.List; + +import javax.swing.table.TableCellEditor; +import javax.swing.table.TableCellRenderer; +import javax.swing.table.TableColumn; + +import org.jdesktop.swingx.JXTreeTable; + +public class JTreeTable extends JXTreeTable { + + + private List isNotEditableRow; + //CheckBoxCellEditor checkBoxCellEditor = new CheckBoxCellEditor(this); + TableCellCheckboxRenderer checkboxRenderer = new TableCellCheckboxRenderer(this); + + public List getIsNotEditableRow() { + return isNotEditableRow; + } + + public void setIsNotEditableRow(List isNotEditableRow) { + this.isNotEditableRow = isNotEditableRow; + } + + public JTreeTable(JTreeTableModel testTreeTableModel) { + // TODO Auto-generated constructor stub + super(testTreeTableModel); + } + + @Override + public boolean isCellEditable(int arg0, int arg1) { + // TODO Auto-generated method stub + return true;//super.isCellEditable(arg0, arg1); + } + + @Override + public TableCellEditor getCellEditor(int row, int column) { + // TODO Auto-generated method stub + //if(isNotEditableRow.contains(row) && column == 2) + + + return cellEditor; + //return super.getCellEditor(row, column); + } + + public String getToolTipText(MouseEvent e) { + int row = this.rowAtPoint(e.getPoint()); + int col = this.columnAtPoint(e.getPoint()); + String tiptextString = null; + if (row > -1 && col > -1) { + Object value = this.getValueAt(row, col); + if (null != value && !"".equals(value)) + tiptextString = value.toString();// 悬浮显示单元格内容 + } + return tiptextString; + } + + @Override + public TableCellRenderer getCellRenderer(int row, int column) { + // TODO Auto-generated method stub + if(this.getValueAt(row, 2) != null && (this.getValueAt(row, 2).toString().equals("0") || this.getValueAt(row, 2).toString().equals("1")) && column == 2) + { + return checkboxRenderer; + } + else + { + return super.getCellRenderer(row, column); + } + } + + // 隐藏列 + public void HiddenCell(int column) { + TableColumn tc = this.getTableHeader().getColumnModel() + .getColumn(column); + tc.setMaxWidth(0); + tc.setPreferredWidth(0); + tc.setWidth(0); + tc.setMinWidth(0); + this.getTableHeader().getColumnModel().getColumn(column).setMaxWidth(0); + this.getTableHeader().getColumnModel().getColumn(column).setMinWidth(0); + } + +} diff --git a/src/com/connor/mdbksplm/dbomtombom/JTreeTableModel.java b/src/com/connor/mdbksplm/dbomtombom/JTreeTableModel.java new file mode 100644 index 0000000..da244b4 --- /dev/null +++ b/src/com/connor/mdbksplm/dbomtombom/JTreeTableModel.java @@ -0,0 +1,118 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package com.connor.mdbksplm.dbomtombom; + +import java.util.List; + +import org.jdesktop.swingx.treetable.DefaultMutableTreeTableNode; +import org.jdesktop.swingx.treetable.DefaultTreeTableModel; +import org.jdesktop.swingx.treetable.TreeTableNode; + + +/** + * + * @author vearn + */ +public class JTreeTableModel extends DefaultTreeTableModel { + + private String[] _names = { "DBOM对象", "MBOM对象","选中", "MBOMID", "物料描述","数量","发布状态","对应父节点"}; + + + private List isNotEditableRow; + + + + public JTreeTableModel(TreeTableNode node) { + super(node); + } + + + public List getIsNotEditableRow() { + return isNotEditableRow; + } + + public void setIsNotEditableRow(List isNotEditableRow) { + this.isNotEditableRow = isNotEditableRow; + } + + /** + * 列的数量 + */ + @Override + public int getColumnCount() { + return _names.length; + } + + /** + * 表头显示的内容 + */ + @Override + public String getColumnName(int column) { + return _names[column]; + } + + /** + * 返回在单元格中显示的Object + */ + @Override + public Object getValueAt(Object node, int column) { + Object value = null; + if (node instanceof DefaultMutableTreeTableNode) { + DefaultMutableTreeTableNode mutableNode = (DefaultMutableTreeTableNode) node; + Object o = mutableNode.getUserObject(); + if (o != null && o instanceof NodeBean) { + NodeBean bean = (NodeBean) o; + switch (column) { + case 0: + value = bean.getDbom(); + break; + case 1: + value = bean.getEbom(); + break; + case 2: + value = bean.getLabel(); + break; + case 3: + value = bean.getEbomId(); + break; + case 4: + value = bean.getEbomDesc(); + break; + case 5: + value = bean.getNum(); + break; + case 6: + value = bean.getRefreshStatus(); + break; + case 7: + value = bean.getParentString(); + break; + } + } + } + return value; + } + + /** + * 设置所有单元格都不能编辑 + * + * @param the node (i.e. row) for which editing is to be determined + * @param the column for which editing is to be determined + * @return false + */ + @Override + public boolean isCellEditable(Object node, int column) { + //if(column == 5) + //{ + return true; + //} + //else + //{ + // return false; + //} + } + + +} diff --git a/src/com/connor/mdbksplm/dbomtombom/NodeBean.java b/src/com/connor/mdbksplm/dbomtombom/NodeBean.java new file mode 100644 index 0000000..8f2b6f2 --- /dev/null +++ b/src/com/connor/mdbksplm/dbomtombom/NodeBean.java @@ -0,0 +1,73 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package com.connor.mdbksplm.dbomtombom; + +import java.util.Random; + +/** + * + * @author vearn + */ +public class NodeBean { + + private String dbom;//对象ID + private String ebom;//对象名称 + private String ebomId;//对象名称 + private String ebomDesc;//物料描述 + private String num;//数量 + private String label;//对象名称 + private String refreshStatus;//发布状态 + private String parentString;//对应父节点 + + public String getDbom() { + return dbom; + } + public void setDbom(String dbom) { + this.dbom = dbom; + } + public String getEbom() { + return ebom; + } + public void setEbom(String ebom) { + this.ebom = ebom; + } + public String getEbomId() { + return ebomId; + } + public void setEbomId(String ebomId) { + this.ebomId = ebomId; + } + public String getLabel() { + return label; + } + public void setLabel(String label) { + this.label = label; + } + public String getRefreshStatus() { + return refreshStatus; + } + public void setRefreshStatus(String refreshStatus) { + this.refreshStatus = refreshStatus; + } + public String getParentString() { + return parentString; + } + public void setParentString(String parentString) { + this.parentString = parentString; + } + public String getNum() { + return num; + } + public void setNum(String num) { + this.num = num; + } + public String getEbomDesc() { + return ebomDesc; + } + public void setEbomDesc(String ebomDesc) { + this.ebomDesc = ebomDesc; + } + +} \ No newline at end of file diff --git a/src/com/connor/mdbksplm/dbomtombom/TableCellCheckboxRenderer.java b/src/com/connor/mdbksplm/dbomtombom/TableCellCheckboxRenderer.java new file mode 100644 index 0000000..0897370 --- /dev/null +++ b/src/com/connor/mdbksplm/dbomtombom/TableCellCheckboxRenderer.java @@ -0,0 +1,71 @@ +package com.connor.mdbksplm.dbomtombom; + +import java.awt.Component; +import java.util.List; + +import javax.swing.JCheckBox; +import javax.swing.JTable; +import javax.swing.SwingConstants; +import javax.swing.event.ChangeEvent; +import javax.swing.event.EventListenerList; +import javax.swing.table.TableCellRenderer; + + +public class TableCellCheckboxRenderer extends JCheckBox implements + TableCellRenderer { + private List processRows; + protected EventListenerList listenerList = new EventListenerList(); + protected ChangeEvent changeEvent = new ChangeEvent(this); + //private TestTreeTableModel tableModel; + + public List getProcessRows() { + return processRows; + } + + public void setProcessRows(List processRows) { + this.processRows = processRows; + + } + + public TableCellCheckboxRenderer(final JTreeTable table) { + } + + @Override + public Component getTableCellRendererComponent(JTable table, Object value, + boolean isSelected, boolean hasFocus, int row, int column) { + // TODO Auto-generated method stub + this.setHorizontalAlignment(SwingConstants.CENTER);// 表头标签剧中 + this.setBorderPainted(true); + + if(value != null) + { +// if(value.toString().equals("1")) +// { +// if(table.getColumnName(column).equals("改制") && hasFocus) +// { +// if(table.getValueAt(row, column + 1).toString().equals("1")) +// { +// table.setValueAt(0, row, column + 1); +// } +// } +// else if(table.getColumnName(column).equals("删除") && hasFocus) +// { +// if(table.getValueAt(row, column - 1).toString().equals("1")) +// { +// table.setValueAt(0, row, column - 1); +// } +// } +// } +// if(value.toString().equals("1")) +// { +// System.out.println(value.toString().equals("1") + "===="); +// } + this.setSelected(value.toString().equals("1")); + } + else + { + this.setSelected(false); + } + return this; + } +} \ No newline at end of file diff --git a/src/com/connor/mdbksplm/designassignment/DesignAssignmentDialog.java b/src/com/connor/mdbksplm/designassignment/DesignAssignmentDialog.java new file mode 100644 index 0000000..d754556 --- /dev/null +++ b/src/com/connor/mdbksplm/designassignment/DesignAssignmentDialog.java @@ -0,0 +1,8 @@ +package com.connor.mdbksplm.designassignment; + +import com.teamcenter.rac.aif.AbstractAIFDialog; + +public class DesignAssignmentDialog extends AbstractAIFDialog{ + + +} diff --git a/src/com/connor/mdbksplm/handlers/SampleHandler.java b/src/com/connor/mdbksplm/handlers/SampleHandler.java new file mode 100644 index 0000000..42e7569 --- /dev/null +++ b/src/com/connor/mdbksplm/handlers/SampleHandler.java @@ -0,0 +1,21 @@ +package com.connor.mdbksplm.handlers; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.handlers.HandlerUtil; +import org.eclipse.jface.dialogs.MessageDialog; + +public class SampleHandler extends AbstractHandler { + + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { + IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindowChecked(event); + MessageDialog.openInformation( + window.getShell(), + "Mdbksplm", + "Hello, Eclipse world"); + return null; + } +} diff --git a/src/com/connor/mdbksplm/projecttaskban/ProjectTask.java b/src/com/connor/mdbksplm/projecttaskban/ProjectTask.java new file mode 100644 index 0000000..3ce64ac --- /dev/null +++ b/src/com/connor/mdbksplm/projecttaskban/ProjectTask.java @@ -0,0 +1,26 @@ +package com.connor.mdbksplm.projecttaskban; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; + +import com.teamcenter.rac.aif.AbstractAIFUIApplication; +import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent; +import com.teamcenter.rac.aifrcp.AIFUtility; +import com.teamcenter.rac.kernel.TCComponent; +import com.teamcenter.rac.kernel.TCComponentProject; +import com.teamcenter.rac.kernel.TCSession; +import com.teamcenter.rac.util.MessageBox; + +public class ProjectTask extends AbstractHandler{ + + @Override + public Object execute(ExecutionEvent arg0) throws ExecutionException { + System.out.println("开始创建界面"); + AbstractAIFUIApplication app = AIFUtility.getCurrentApplication(); + ProjectTaskDialog dialog = new ProjectTaskDialog(app); + dialog.initUI(); +// new Thread(dialog).start(); + return null; + } +} diff --git a/src/com/connor/mdbksplm/projecttaskban/ProjectTaskDialog.java b/src/com/connor/mdbksplm/projecttaskban/ProjectTaskDialog.java new file mode 100644 index 0000000..a58e196 --- /dev/null +++ b/src/com/connor/mdbksplm/projecttaskban/ProjectTaskDialog.java @@ -0,0 +1,1522 @@ +package com.connor.mdbksplm.projecttaskban; + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.io.File; +import java.io.FileOutputStream; +import java.io.FileWriter; +import java.io.IOException; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +import javax.swing.JButton; +import javax.swing.JComponent; +import javax.swing.JFileChooser; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JMenuItem; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JPopupMenu; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.JTextField; +import javax.swing.filechooser.FileSystemView; +import javax.swing.table.DefaultTableCellRenderer; +import javax.swing.table.DefaultTableModel; +import javax.swing.table.JTableHeader; +import javax.swing.table.TableCellRenderer; +import javax.swing.table.TableColumn; + +import org.apache.poi.ss.usermodel.CellStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.apache.poi.ss.util.CellRangeAddress; +import org.apache.poi.xssf.usermodel.XSSFCell; +import org.apache.poi.xssf.usermodel.XSSFCellStyle; +import org.apache.poi.xssf.usermodel.XSSFRow; +import org.apache.poi.xssf.usermodel.XSSFSheet; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; + +//import org.jdesktop.swingx.DateButton; + +import com.connnor.mdbksplm.table3.DefaultGroup; +import com.connnor.mdbksplm.table3.GroupableTableHeader; +import com.connor.mdbksplm.util.ConnorUtils; +import com.connor.mdbksplm.util.ProgressBarDemo; +import com.connor.mdbksplm.util.WaitingDialog; +import com.teamcenter.rac.aif.AbstractAIFCommand; +import com.teamcenter.rac.aif.AbstractAIFDialog; +import com.teamcenter.rac.aif.AbstractAIFUIApplication; +import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent; +import com.teamcenter.rac.aifrcp.AIFUtility; +import com.teamcenter.rac.commands.open.OpenCommand; +import com.teamcenter.rac.kernel.TCAccessControlService; +import com.teamcenter.rac.kernel.TCComponent; +import com.teamcenter.rac.kernel.TCComponentForm; +import com.teamcenter.rac.kernel.TCComponentGroupMember; +import com.teamcenter.rac.kernel.TCComponentItem; +import com.teamcenter.rac.kernel.TCComponentItemRevision; +import com.teamcenter.rac.kernel.TCComponentProject; +import com.teamcenter.rac.kernel.TCComponentSchedule; +import com.teamcenter.rac.kernel.TCComponentUser; +import com.teamcenter.rac.kernel.TCException; +import com.teamcenter.rac.kernel.TCPreferenceService; +import com.teamcenter.rac.kernel.TCSession; +import com.teamcenter.rac.kernel.TCUserService; +import com.teamcenter.rac.util.DateButton; +import com.teamcenter.rac.util.MessageBox; +import com.teamcenter.rac.util.PropertyLayout; + +public class ProjectTaskDialog extends JFrame{ + + private static final long serialVersionUID = 1L; + private TCSession session; + private AbstractAIFUIApplication app; + protected TCUserService userService; + + List xmxxList = new ArrayList<>(); + HashMap xmxxMap = new HashMap<>(); + + List cpxxList = new ArrayList<>(); + HashMap cpxxMap = new HashMap<>(); + + List sjxxList = new ArrayList<>(); + HashMap sjxxMap = new HashMap<>(); + + // 项目编号 :项目信息 + HashMap> projectDataMap = new HashMap>(); + + // 项目编号 :所有产品信息 + HashMap>> productDataMap = new HashMap<>(); + + // 项目编号 : 时间表信息 + HashMap> sjbDataMap = new HashMap<>(); + + // 项目编号 :项目 + HashMap projectConnect = new HashMap<>(); + + // 项目编号 :时间表 + HashMap sjbConnect = new HashMap<>(); + + List> allShu = new ArrayList<>(); + + JTable createTable; + + Integer num = 0; + + JButton searchButton = new JButton(); + JButton exportButton = new JButton("导出"); + + private JTextField xmbhField; + private JTextField cpbhField; + private JTextField cllylField; + private DateButton sgyjsjPicker; + private DateButton sgyjsjzPicker; + private JTextField nxqlField; + private JTextField nxqlzField; + private JTextField xmmcField; + private JTextField cpmcField; + private JTextField gjField; + private DateButton sopPicker; + private DateButton sopzPicker; + private JTextField smzqField; + private JTextField smzqzField; + private JTextField sycxField; + private JTextField kflxField; + private JTextField gkljbhField; + private DateButton otsPicker; + private DateButton otszPicker; + private DateButton cjrqPicker; + private DateButton cjrqzPicker; + private JTextField khbhField; + private JTextField clbzField; + private DateButton eopPicker; + private DateButton eopzPicker; + +// ProgressBarDemo wait = new ProgressBarDemo(); + private WaitingDialog waiting; + + public ProjectTaskDialog(AbstractAIFUIApplication app) { +// super(false); + this.app = app; + this.session = (TCSession) app.getSession(); + } + + public void initUI() { + FindData(); + this.setTitle("项目综合看板"); + this.setPreferredSize(new Dimension(1600, 480)); + this.setLayout(new BorderLayout()); + + Font font = new Font("宋体", Font.PLAIN, 12);//创建1个字体实例 + Font font2 = new Font("宋体", Font.PLAIN, 10);//创建1个字体实例 + + JPanel midJPanel = new JPanel(new PropertyLayout(10,10,10,10,10,10)); + midJPanel.setPreferredSize(new Dimension(1500, 160)); + + // 第一列 + JLabel xmbhLabel = new JLabel("项目编号:"); + xmbhLabel.setFont(font); + xmbhLabel.setPreferredSize(new Dimension(60, 22)); + midJPanel.add("1.1.left",xmbhLabel); + xmbhField = new JTextField(); + xmbhField.setPreferredSize(new Dimension(80, 22)); + xmbhField.setFont(font); + midJPanel.add("1.2.left",xmbhField); + + JLabel cpbhLabel = new JLabel(" 产品编号:"); + cpbhLabel.setPreferredSize(new Dimension(70, 22)); + cpbhLabel.setFont(font); + midJPanel.add("1.3.left",cpbhLabel); + cpbhField = new JTextField(); + cpbhField.setPreferredSize(new Dimension(80, 22)); + cpbhField.setFont(font); + midJPanel.add("1.4.left",cpbhField); + + JLabel cllylLabel = new JLabel(" 材料利用率:"); + cllylLabel.setPreferredSize(new Dimension(100, 22)); + cllylLabel.setFont(font); + midJPanel.add("1.5.left",cllylLabel); + cllylField = new JTextField(); + cllylField.setPreferredSize(new Dimension(100, 22)); + cllylField.setFont(font); + midJPanel.add("1.6.left",cllylField); + + JLabel sgyjsjLabel = new JLabel(" 手工样件时间:"); + sgyjsjLabel.setPreferredSize(new Dimension(100, 22)); + sgyjsjLabel.setFont(font); + midJPanel.add("1.7.left",sgyjsjLabel); + sgyjsjPicker = new DateButton(); + Date date = null; + sgyjsjPicker.setDate(date); + sgyjsjPicker.setPreferredSize(new Dimension(165, 22)); + sgyjsjPicker.setFont(font); + midJPanel.add("1.8.left",sgyjsjPicker); + + JLabel sgyjsjzLabel = new JLabel("至"); + sgyjsjzLabel.setPreferredSize(new Dimension(20, 22)); + sgyjsjzLabel.setFont(font); + midJPanel.add("1.9.left",sgyjsjzLabel); + sgyjsjzPicker = new DateButton(); + sgyjsjzPicker.setDate(date); + sgyjsjzPicker.setPreferredSize(new Dimension(165, 22)); + sgyjsjzPicker.setFont(font); + midJPanel.add("1.10.left",sgyjsjzPicker); + + JLabel nxqlLabel = new JLabel(" 年需求量:"); + nxqlLabel.setPreferredSize(new Dimension(70, 22)); + nxqlLabel.setFont(font); + midJPanel.add("1.11.left",nxqlLabel); + nxqlField = new JTextField(); +// nxqlField.setDate(date); + nxqlField.setPreferredSize(new Dimension(165, 22)); + nxqlField.setFont(font); + midJPanel.add("1.12.left",nxqlField); + + JLabel nxqlzLabel = new JLabel("至"); + nxqlzLabel.setPreferredSize(new Dimension(20, 22)); + nxqlzLabel.setFont(font); + midJPanel.add("1.13.left",nxqlzLabel); + nxqlzField = new JTextField(); +// nxqlzField.setDate(date); + nxqlzField.setPreferredSize(new Dimension(165, 22)); + nxqlzField.setFont(font); + midJPanel.add("1.14.left",nxqlzField); + + searchButton.setPreferredSize(new Dimension(60, 22)); + searchButton.setText("查询"); + searchButton.setFont(font2); + midJPanel.add("1.15.left",searchButton); + + // 第二列 + JLabel xmmcLabel = new JLabel("项目名称:"); + xmmcLabel.setPreferredSize(new Dimension(60, 22)); + xmmcLabel.setFont(font); + midJPanel.add("2.1.left",xmmcLabel); + xmmcField = new JTextField(); + xmmcField.setPreferredSize(new Dimension(80, 22)); + xmmcField.setFont(font); + midJPanel.add("2.2.left",xmmcField); + + JLabel cpmcLabel = new JLabel(" 产品名称:"); + cpmcLabel.setPreferredSize(new Dimension(70, 22)); + cpmcLabel.setFont(font); + midJPanel.add("2.3.left",cpmcLabel); + cpmcField = new JTextField(); + cpmcField.setPreferredSize(new Dimension(80, 22)); + cpmcField.setFont(font); + midJPanel.add("2.4.left",cpmcField); + + JLabel gjLabel = new JLabel(" 钢卷宽度*厚度:"); + gjLabel.setPreferredSize(new Dimension(100, 22)); + gjLabel.setFont(font); + midJPanel.add("2.5.left",gjLabel); + gjField = new JTextField(); + gjField.setPreferredSize(new Dimension(100, 22)); + gjField.setFont(font); + midJPanel.add("2.6.left",gjField); + + JLabel sopLabel = new JLabel(" SOP时间:"); + sopLabel.setPreferredSize(new Dimension(100, 22)); + sopLabel.setFont(font); + midJPanel.add("2.7.left",sopLabel); + sopPicker = new DateButton(); + sopPicker.setDate(date); + sopPicker.setPreferredSize(new Dimension(165, 22)); + sopPicker.setFont(font); + midJPanel.add("2.8.left",sopPicker); + + JLabel sopzLabel = new JLabel("至"); + sopzLabel.setPreferredSize(new Dimension(20, 22)); + sopzLabel.setFont(font); + midJPanel.add("2.9.left",sopzLabel); + sopzPicker = new DateButton(); + sopzPicker.setDate(date); + sopzPicker.setPreferredSize(new Dimension(165, 22)); + sopzPicker.setFont(font); + midJPanel.add("2.10.left",sopzPicker); + + JLabel smzqLabel = new JLabel(" 生命周期:"); + smzqLabel.setPreferredSize(new Dimension(70, 22)); + smzqLabel.setFont(font); + midJPanel.add("2.11.left",smzqLabel); + smzqField = new JTextField(); +// smzqField.setDate(date); + smzqField.setPreferredSize(new Dimension(165, 22)); + smzqField.setFont(font); + midJPanel.add("2.12.left",smzqField); + + JLabel smzqzLabel = new JLabel("至"); + smzqzLabel.setPreferredSize(new Dimension(20, 22)); + smzqzLabel.setFont(font); + midJPanel.add("2.13.left",smzqzLabel); + smzqzField = new JTextField(); +// smzqzField.setDate(date); + smzqzField.setPreferredSize(new Dimension(165, 22)); + smzqzField.setFont(font); + midJPanel.add("2.14.left",smzqzField); + + exportButton.setPreferredSize(new Dimension(60, 22)); + exportButton.setFont(font2); + midJPanel.add("2.15.left",exportButton); + + // 第三列 + JLabel sycxLabel = new JLabel("适用车型:"); + sycxLabel.setPreferredSize(new Dimension(60, 22)); + sycxLabel.setFont(font); + midJPanel.add("3.1.left",sycxLabel); + sycxField = new JTextField(); + sycxField.setPreferredSize(new Dimension(80, 22)); + sycxField.setFont(font); + midJPanel.add("3.2.left",sycxField); + + JLabel kflxLabel = new JLabel(" 开发类型:"); + kflxLabel.setPreferredSize(new Dimension(70, 22)); + kflxLabel.setFont(font); + midJPanel.add("3.3.left",kflxLabel); + kflxField = new JTextField(); + kflxField.setPreferredSize(new Dimension(80, 22)); + kflxField.setFont(font); + midJPanel.add("3.4.left",kflxField); + + JLabel gkljbhLabel = new JLabel(" 顾客零件编号:"); + gkljbhLabel.setPreferredSize(new Dimension(100, 22)); + gkljbhLabel.setFont(font); + midJPanel.add("3.5.left",gkljbhLabel); + gkljbhField = new JTextField(); + gkljbhField.setPreferredSize(new Dimension(100, 22)); + gkljbhField.setFont(font); + midJPanel.add("3.6.left",gkljbhField); + + JLabel otsLabel = new JLabel(" OTS样件时间:"); + otsLabel.setPreferredSize(new Dimension(100, 22)); + otsLabel.setFont(font); + midJPanel.add("3.7.left",otsLabel); + otsPicker = new DateButton(); + otsPicker.setDate(date); + otsPicker.setPreferredSize(new Dimension(165, 22)); + otsPicker.setFont(font); + midJPanel.add("3.8.left",otsPicker); + + JLabel otszLabel = new JLabel("至"); + otszLabel.setPreferredSize(new Dimension(20, 22)); + otszLabel.setFont(font); + midJPanel.add("3.9.left",otszLabel); + otszPicker = new DateButton(); + otszPicker.setDate(date); + otszPicker.setPreferredSize(new Dimension(165, 22)); + otszPicker.setFont(font); + midJPanel.add("3.10.left",otszPicker); + + JLabel cjrqLabel = new JLabel(" 创建日期:"); + cjrqLabel.setPreferredSize(new Dimension(70, 22)); + cjrqLabel.setFont(font); + midJPanel.add("3.11.left",cjrqLabel); + cjrqPicker = new DateButton(); + cjrqPicker.setDate(date); + cjrqPicker.setPreferredSize(new Dimension(165, 22)); + cjrqPicker.setFont(font); + midJPanel.add("3.12.left",cjrqPicker); + + JLabel cjrqzLabel = new JLabel("至"); + cjrqzLabel.setPreferredSize(new Dimension(20, 22)); + cjrqzLabel.setFont(font); + midJPanel.add("3.13.left",cjrqzLabel); + cjrqzPicker = new DateButton(); + cjrqzPicker.setDate(date); + cjrqzPicker.setPreferredSize(new Dimension(165, 22)); + cjrqzPicker.setFont(font); + midJPanel.add("3.14.left",cjrqzPicker); + + + // 第四列 + JLabel khbhLabel = new JLabel("客户编号:"); + khbhLabel.setPreferredSize(new Dimension(60, 22)); + khbhLabel.setFont(font); + midJPanel.add("4.1.left",khbhLabel); + khbhField = new JTextField(); + khbhField.setPreferredSize(new Dimension(80, 22)); + khbhField.setFont(font); + midJPanel.add("4.2.left",khbhField); + + JLabel clbzLabel = new JLabel(" 材料标准:"); + clbzLabel.setPreferredSize(new Dimension(70, 22)); + clbzLabel.setFont(font); + midJPanel.add("4.3.left",clbzLabel); + clbzField = new JTextField(); + clbzField.setPreferredSize(new Dimension(80, 22)); + clbzField.setFont(font); + midJPanel.add("4.4.left",clbzField); + + JLabel kgLabel = new JLabel(" "); + kgLabel.setPreferredSize(new Dimension(210, 22)); + kgLabel.setFont(font); + midJPanel.add("4.5.left",kgLabel); + + JLabel eopLabel = new JLabel(" EOP时间:"); + eopLabel.setPreferredSize(new Dimension(100, 22)); + eopLabel.setFont(font); + midJPanel.add("4.6.left",eopLabel); + eopPicker = new DateButton(); + eopPicker.setDate(date); + eopPicker.setPreferredSize(new Dimension(165, 22)); + eopPicker.setFont(font); + midJPanel.add("4.7.left",eopPicker); + + JLabel eopzLabel = new JLabel("至"); + eopzLabel.setPreferredSize(new Dimension(20, 22)); + eopzLabel.setFont(font); + midJPanel.add("4.8.left",eopzLabel); + eopzPicker = new DateButton(); + eopzPicker.setDate(date); + eopzPicker.setPreferredSize(new Dimension(165, 22)); + eopzPicker.setFont(font); + midJPanel.add("4.9.left",eopzPicker); + + JTable createTable = createTable(xmxxList.size()+1,cpxxList.size(),sjxxList.size()); +// createTable = createTable(3,4,5); + + // 添加表头点击事件监听器 + JTableHeader header = createTable.getTableHeader(); + header.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + int column = createTable.columnAtPoint(e.getPoint()); + System.out.println("Clicked column header " + (column + 1)); + allShu = sortByIndexAndUpdateMap(allShu,(column + 1),null,null); + clearTable(createTable); + createTable.updateUI(); + num = 0; + DefaultTableModel m = (DefaultTableModel) createTable.getModel(); + for(List list : allShu) { + m.addRow(list.toArray()); + } + for(int x = sjxxList.size(); x>0; x--) { + setTableCellBackgroundByLastColumn(createTable,x); + } + createTable.updateUI(); + } + + }); + + JScrollPane scroll = new JScrollPane(createTable); + + this.setLayout(new BorderLayout()); + this.add(midJPanel, BorderLayout.NORTH); +// this.add(midJPanel, BorderLayout.CENTER); + this.add(scroll, BorderLayout.CENTER); + this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); + this.pack(); + this.setResizable(true); + this.setLocationRelativeTo(null); +// this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + this.setExtendedState(JFrame.MAXIMIZED_BOTH); + this.setVisible(true); + + searchButton.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { +// wait.showProgressBar();// 开启进度条 +// wait.updateProgress(1); + waiting = new WaitingDialog(null, "等待提示", "正在加载,请稍侯 ..."); + waiting.SetDialogMessage("正在加载,请稍侯 ..."); + waiting.setVisible(true);// 开启进度条 + + if(projectConnect != null ) { + // 项目编号 :项目信息 + projectDataMap = new HashMap>(); + // 项目编号 :所有产品信息 + productDataMap = new HashMap<>(); + // 项目编号 : 时间表信息 + sjbDataMap = new HashMap<>(); + // 项目编号 :项目 + projectConnect = new HashMap<>(); + // 项目编号 :时间表 + sjbConnect = new HashMap<>(); + } + setByPass(true); + allShu = new ArrayList<>(); + clearTable(createTable); + createTable.updateUI(); + searchData(); // 此函数执行完成后,所有数据已准备完毕 + num = 0; + transformList(createTable); + setByPass(false); + +// wait.hideProgressBar(); // 关闭进度条 + if (waiting != null) + waiting.setVisible(false);// 关闭进度条 + + } + }); + + exportData(); + rightAdd(createTable); + } + + public void exportData() { + // TODO Auto-generated method stub + exportButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + // 弹出文件选择框 + JFileChooser jfc = new JFileChooser(FileSystemView.getFileSystemView().getHomeDirectory()); + jfc.setDialogTitle("Choose a directory to export the file"); + jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); + int returnValue = jfc.showSaveDialog(null); + if (returnValue == JFileChooser.APPROVE_OPTION) { + File selectedDirectory = jfc.getSelectedFile(); + // 导出数据到Excel + try { + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); + String format = df.format(new Date()); + String fw = selectedDirectory.getAbsolutePath() + "/项目综合看板-" + format + ".xlsx"; + writeExcel(fw, allShu); + JOptionPane.showMessageDialog(null, "导出成功!"); + } catch (IOException ex) { + ex.printStackTrace(); + } + } + } + }); + } + + public void transformList(JTable createTable) { + DefaultTableModel m = (DefaultTableModel) createTable.getModel(); + // 遍历每一个项目 + projectConnect.forEach((k,v)->{ + String projectId = k; + // 遍历项目信息 + List list = projectDataMap.get(projectId); + + // 遍历时间表信息 + HashMap hashMap = sjbDataMap.get(projectId); +// for(int i=0; i> list2 = productDataMap.get(projectId); + // 如果没有产品信息,那么那几列填充空数据 + if(list2 == null || list2.size() == 0) { + List rowList = new ArrayList<>(); +// num++; + rowList.add(num.toString()); // 添加序号 + rowList.addAll(list); // 添加项目信息 + for(int i=0; i rowList = new ArrayList<>(); + num++; + rowList.add(num.toString()); // 添加序号 + rowList.addAll(list); // 添加项目信息 + rowList.addAll(list2.get(i)); // 添加产品信息 + for(int j=0; j0; x--) { + setTableCellBackgroundByLastColumn(createTable,x); + } + + + createTable.updateUI(); + + } + + @SuppressWarnings("deprecation") + public void searchData() { + List allUid = getMaxItemId(); + // 对查询出的每一个项目进行遍历 + for(int i=0; i0) { + for(int j=0;j0) { + for(int k=0;k0) { + List> productDataList = new ArrayList<>(); + productDataMap.put(projectId, productDataList); + addProductData(allXpList, productDataList); + } + // 由于已经找到通知书,所以不必再继续循环 + break; + } + } + } +// // 由于已经找到第一阶段,所以不必再继续循环 +// break; + } + + // 找到时间表 + TCComponent schedule = new TCComponent(); + if(project_data_name.equals("时间表")) { + System.out.println("找到时间表文件夹"); + TCComponent[] datas = project_datas[j].getRelatedComponents("project_data"); + if(datas!=null && datas.length>0) { + for(int k=0;k sjList = new ArrayList<>(); + HashMap sjMap = new HashMap<>(); + for (TCComponent child : childs) { + String type = child.getType(); + if(!"ScheduleTask".equals(type)){ + continue; + } + + String property = child.getStringProperty("object_name"); + sjbConnect.put(projectId,child); + // 节点为里程碑,开始与首选项模糊匹配 + // *2023/5/9改为节点为汇总任务(1改为2) + if(child.getProperty("task_type").equals("2")) { +// System.out.println("找到里程碑:" + property); + System.out.println("找到汇总任务:" + property); + for(String s : sjxxList) { + if(s.contains(property) || property.contains(s)) { + // 匹配成功 + + Date finish_date = child.getDateProperty("finish_date"); // 计划完成时间 + Date actual_finish_date = child.getDateProperty("actual_finish_date"); // 实际完成时间 + String finish_status = ""; + // *2023/5/9修改 +// if(actual_finish_date==null) { +// if(finish_date.after(new Date())) { +// finish_status = "进行中"; +// }else if(finish_date.before(new Date())){ +// int days = daysBetweenDates(finish_date, new Date()); +// finish_status = "延期" + days + "天"; +// } else { +// finish_status = "按期完成"; +// } +// }else { +// if(finish_date.after(actual_finish_date)) { +// int days = daysBetweenDates(actual_finish_date, finish_date); +// finish_status = "提前" + days + "天完成"; +// }else if(finish_date.before(actual_finish_date)){ +// int days = daysBetweenDates(finish_date, actual_finish_date); +// finish_status = "延期" + days + "天完成"; +// } else { +// finish_status = "按期完成"; +// } +// } + if(actual_finish_date != null) { + if(actual_finish_date.after(finish_date)){ + int days = daysBetweenDates(actual_finish_date, finish_date); + finish_status = "延期" + (days+1) + "天完成"; + } else if(actual_finish_date.before(finish_date)){ + int days = daysBetweenDates(actual_finish_date, finish_date); + finish_status = "提前" + (days+1) + "天完成"; + } else { + finish_status = "按期完成"; + } + } else { + if(finish_date != null && (new Date()).after(finish_date)) { + int days = daysBetweenDates(finish_date, new Date()); + finish_status = "延期" + (days+1) + "天"; + } else { + finish_status = "进行中"; + } + } + Date actual_start_date = child.getDateProperty("actual_start_date"); + // 如果实际开始时间为空,则是未开始 + if(actual_start_date == null) { + finish_status = "未开始"; + } + // *结束 + + sjMap.put(s, finish_status); + sjbDataMap.put(projectId, sjMap); + // 模糊匹配成功,不必继续匹配 + break; + } + } + } + + + +// TCComponent[] childers = child.getReferenceListProperty("child_task_taglist"); +// for (TCComponent childer : childers) { +// String property = childer.getStringProperty("object_name"); +// sjbConnect.put(projectId,childer); +// // 节点为里程碑,开始与首选项模糊匹配 +// // *2023/5/9改为节点为汇总任务(1改为2) +// if(childer.getProperty("task_type").equals("2")) { +//// System.out.println("找到里程碑:" + property); +// System.out.println("找到汇总任务:" + property); +// for(String s : sjxxList) { +// if(s.contains(property) || property.contains(s)) { +// // 匹配成功 +// +// Date finish_date = childer.getDateProperty("finish_date"); // 计划完成时间 +// Date actual_finish_date = childer.getDateProperty("actual_finish_date"); // 实际完成时间 +// String finish_status = ""; +// // *2023/5/9修改 +//// if(actual_finish_date==null) { +//// if(finish_date.after(new Date())) { +//// finish_status = "进行中"; +//// }else if(finish_date.before(new Date())){ +//// int days = daysBetweenDates(finish_date, new Date()); +//// finish_status = "延期" + days + "天"; +//// } else { +//// finish_status = "按期完成"; +//// } +//// }else { +//// if(finish_date.after(actual_finish_date)) { +//// int days = daysBetweenDates(actual_finish_date, finish_date); +//// finish_status = "提前" + days + "天完成"; +//// }else if(finish_date.before(actual_finish_date)){ +//// int days = daysBetweenDates(finish_date, actual_finish_date); +//// finish_status = "延期" + days + "天完成"; +//// } else { +//// finish_status = "按期完成"; +//// } +//// } +// if(actual_finish_date != null) { +// if(actual_finish_date.after(finish_date)){ +// int days = daysBetweenDates(actual_finish_date, finish_date); +// finish_status = "延期" + days + "天完成"; +// } else if(actual_finish_date.before(finish_date)){ +// int days = daysBetweenDates(actual_finish_date, finish_date); +// finish_status = "提前" + days + "天完成"; +// } else { +// finish_status = "按期完成"; +// } +// } else { +// if(new Date().after(finish_date)) { +// int days = daysBetweenDates(finish_date, new Date()); +// finish_status = "延期" + days + "天"; +// } else { +// finish_status = "进行中"; +// } +// } +// Date actual_start_date = childer.getDateProperty("actual_start_date"); +// // 如果实际开始时间为空,则是未开始 +// if(actual_start_date == null) { +// finish_status = "未开始"; +// } +// // *结束 +// +// sjMap.put(s, finish_status); +// sjbDataMap.put(projectId, sjMap); +// // 模糊匹配成功,不必继续匹配 +// break; +// } +// +// +// } +// +// // 当前阶段已找到里程碑,不必再找 +// break; +// } +// } + + } + } + } + } + } + } catch (TCException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } + + private JTable createTable(int c1, int c2, int c3) { + int sum = c1 + c2 + c3; + DefaultTableModel gfModel = new DefaultTableModel() { + @Override + public int getColumnCount() { + return sum; + } + }; + + JTable table = new JTable(gfModel){ + public boolean isCellEditable(int row, int column) { + return false; + } + }; + table.setRowHeight(40); + table.getTableHeader().setReorderingAllowed(false); // 设置不可拖拽 +// table.getColumnModel().getColumn(0).setPreferredWidth(90); +// table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + GroupableTableHeader tableHeader = new GroupableTableHeader(); + table.setTableHeader(tableHeader); + + DefaultGroup group = new DefaultGroup(); + + group = new DefaultGroup(); + group.setRow(0); + group.setColumn(0); + group.setColumnSpan(c1); + group.setHeaderValue("项目信息"); + tableHeader.addGroup(group); + + group = new DefaultGroup(); + group.setRow(0); + group.setColumn(c1); + group.setColumnSpan(c2); + group.setHeaderValue("产品信息"); + tableHeader.addGroup(group); + + group = new DefaultGroup(); + group.setRow(0); + group.setColumn(c1+c2); + group.setColumnSpan(c3); + group.setHeaderValue("进度状态"); + tableHeader.addGroup(group); + + group = new DefaultGroup(); + group.setRow(1); + group.setColumn(0); + group.setHeaderValue("序号"); + tableHeader.addGroup(group); + + for(int i=1; i getMaxItemId() { +// TCComponentProject + + String sql = "select puid from PTC_PROJECT where 1=1 "; + if(xmbhField.getText() != null && !"".equals(xmbhField.getText())) { + sql += "AND pproject_id LIKE '%" + xmbhField.getText() + "%' \r\n"; + } + if(xmmcField.getText() != null && !"".equals(xmmcField.getText())) { + sql += "AND pproject_name LIKE '%" + xmmcField.getText() + "%' \r\n"; + } + if(sycxField.getText() != null && !"".equals(sycxField.getText())) { + sql += "AND pmt8_applicablemodel LIKE '%" + sycxField.getText() + "%' \r\n"; + } + if(khbhField.getText() != null && !"".equals(khbhField.getText())) { + sql += "AND pmt8_customerNo LIKE '%" + khbhField.getText() + "%' \r\n"; + } + if(kflxField.getText() != null && !"".equals(kflxField.getText())) { + sql += "AND pmt8_development LIKE '%" + kflxField.getText() + "%' \r\n"; + } + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); + if(sgyjsjPicker.getDate() != null) { + sql += "AND pmt8_manualtime_date >='" + df.format(sgyjsjPicker.getDate()) + "' \r\n"; + } + if(sgyjsjzPicker.getDate() != null) { + sql += "AND pmt8_manualtime_date <='" + df.format(sgyjsjzPicker.getDate()) + "' \r\n"; + } + if(sopPicker.getDate() != null) { + sql += "AND pmt8_soptime_date >='" + df.format(sopPicker.getDate()) + "' \r\n"; + } + if(sopzPicker.getDate() != null) { + sql += "AND pmt8_soptime_date <='" + df.format(sopzPicker.getDate()) + "' \r\n"; + } + if(otsPicker.getDate() != null) { + sql += "AND pmt8_otstime_date >='" + df.format(otsPicker.getDate()) + "' \r\n"; + } + if(otszPicker.getDate() != null) { + sql += "AND pmt8_otstime_date <='" + df.format(otszPicker.getDate()) + "' \r\n"; + } + if(eopPicker.getDate() != null) { + sql += "AND pmt8_eoptime_date >='" + df.format(eopPicker.getDate()) + "' \r\n"; + } + if(eopzPicker.getDate() != null) { + sql += "AND pmt8_eoptime_date <='" + df.format(eopzPicker.getDate()) + "' \r\n"; + } + if(nxqlField.getText() != null && !"".equals(nxqlField.getText())) { + sql += "AND pmt8_annualdemand >=" + nxqlField.getText() + " \r\n"; + } + if(nxqlzField.getText() != null && !"".equals(nxqlzField.getText())) { + sql += "AND pmt8_annualdemand <=" + nxqlzField.getText() + " \r\n"; + } + if(smzqField.getText() != null && !"".equals(smzqField.getText())) { + sql += "AND pmt8_lifecycle >=" + smzqField.getText() + " \r\n"; + } + if(smzqzField.getText() != null && !"".equals(smzqzField.getText())) { + sql += "AND pmt8_lifecycle <=" + smzqzField.getText() + " \r\n"; + } + ResultSet rs = null; + PreparedStatement ps = null; + List list = new ArrayList<>(); + Connection connection = ConnorUtils.getSqlServerConnection(); + try { + System.out.println("SQL:" + sql); + ps = connection.prepareStatement(sql); + rs = ps.executeQuery(); + while(rs != null && rs.next()) { + System.out.println("查询到了:" + rs.getString(1)); + list.add(rs.getString(1)); + } + } catch (SQLException e1) { + e1.printStackTrace(); + } finally { + if(rs!=null) { + try { + rs.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + if(ps!=null) { + try { + ps.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + if(connection!=null) { + try { + connection.close(); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } + return list; + } + + public void FindData() { + TCPreferenceService preferenceService = session.getPreferenceService(); + String[] strs = preferenceService.getStringValues("MT_Projectinfo"); + for (String s : strs) { + String[] split = s.split("="); + if (split.length > 1) { + xmxxList.add(split[1]); + xmxxMap.put(split[1], split[0]); + } + + } + + strs = preferenceService.getStringValues("MT_Productinfo"); + for (String s : strs) { + String[] split = s.split("="); + if (split.length > 1) { + cpxxList.add(split[1]); + cpxxMap.put(split[1], split[0]); + } + + } + + strs = preferenceService.getStringValues("MT_Scheduleinfo"); + for (String s : strs) { + sjxxList.add(s); + + } + } + + // 添加项目信息相关数据 + public void addProjectData(TCComponentProject project) { + try { + List pList = new ArrayList<>(); + for(String s : xmxxList) { + String string = xmxxMap.get(s); + String property = project.getProperty(string); + pList.add(property); + } + projectDataMap.put(project.getProperty("project_id"), pList); + }catch(Exception e) { + e.printStackTrace(); + } + } + + // 添加产品信息相关数据 + public void addProductData(TCComponent[] XpList, List> productDataList) { + try { + for(int i=0; i pList = new ArrayList<>(); + for(String s : cpxxList) { + String string = cpxxMap.get(s); + String property = allXpList[m].getProperty(string); + pList.add(property); + } + productDataList.add(pList); + + } + } + } + } + } + } + } + } + } + + + }catch(Exception e) { + e.printStackTrace(); + } + } + + // 添加右键事件 + public void rightAdd(JTable table) { + table.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + if (e.getButton() == MouseEvent.BUTTON3) { + int row = table.rowAtPoint(e.getPoint()); + int col = table.columnAtPoint(e.getPoint()); + table.setRowSelectionInterval(row, row); + table.setColumnSelectionInterval(col, col); + JPopupMenu popupMenu = new JPopupMenu(); + JMenuItem genderMenuItem = new JMenuItem("打开项目"); + genderMenuItem.addActionListener(e1 -> { + String valueAt = (String)table.getValueAt(row, 1); + TCComponentProject tcComponentProject = projectConnect.get(valueAt); + openForm(tcComponentProject); + }); + popupMenu.add(genderMenuItem); + JMenuItem ageMenuItem = new JMenuItem("打开项目计划"); + ageMenuItem.addActionListener(e1 -> { + String valueAt = (String)table.getValueAt(row, 1); + TCComponent tcComponent = sjbConnect.get(valueAt); + openForm(tcComponent); + }); + popupMenu.add(ageMenuItem); + popupMenu.show(table, e.getX(), e.getY()); + } + + } + }); + } + +// private void getProjectMember(DataReleaseBean bean) { +// try { +// if(SuporUtils.isEmpty(bean.getProjID())) { +// return; +// } +// TCComponent[] projectSearch = session.search("项目...", new String[] {"项目名称"}, new String[] {bean.getProjID()}); +// if(projectSearch!=null && projectSearch.length>0) { +// TCComponent[] members = projectSearch[0].getRelatedComponents("awp0ProjectTeamMembers"); +// if(members!=null && members.length>0) { +// for(int i=0;i0) { +// System.out.println("组织数组不为空"); +// for(int i=0;i0) { +//// for(int i=0;i(); + DefaultTableModel model = (DefaultTableModel) table.getModel(); + while (model.getRowCount() > 0) { + model.removeRow(0); + } + } + + // 生成excel + public void writeExcel(String filePath, List> data) throws IOException { + // 创建一个工作簿对象 + XSSFWorkbook workbook = new XSSFWorkbook(); + // 创建一个工作表对象 + XSSFSheet sheet = workbook.createSheet(); + // 创建第一行,写表头 + XSSFRow rowHeader = sheet.createRow(0); + // 创建表头单元格对象 + XSSFCell headerCell = rowHeader.createCell(0); + // 设置表头单元格的值 + + // 创建一个单元格合并区域对象,将第一行第一列和第一行最后一列合并 + CellRangeAddress region = new CellRangeAddress(0, 0, 0, data.get(0).size() - 1); + // 使用addMergedRegion方法将单元格合并区域应用到工作表中 + sheet.addMergedRegion(region); +// // 设置表头单元格样式 + CellStyle style = workbook.createCellStyle(); + style.setAlignment(HorizontalAlignment.CENTER); + headerCell.setCellStyle(style); + headerCell.setCellValue("项目综合看板"); + // 写标题 + XSSFRow rowNext = sheet.createRow(1); + for(int i=0; i rowData = data.get(i); + // 遍历当前行数据,将数据写入到行中 + for (int j = 0; j < rowData.size(); j++) { + // 创建一个单元格对象 + XSSFCell cell = row.createCell(j); + // 设置单元格的值 + cell.setCellValue(rowData.get(j)); + } + } + // 创建一个文件输出流对象 + FileOutputStream outputStream = new FileOutputStream(filePath); + // 将工作簿写入到文件输出流中 + workbook.write(outputStream); + // 关闭文件输出流 + outputStream.close(); + } + + // 开旁路 + public void setByPass(boolean val) { + try { + if (userService == null) { + userService = this.session.getUserService(); + } + Object[] obj = new Object[1]; + obj[0] = ""; + if (val) { + System.out.println("旁路已开启"); + userService.call("Connor_set_bypass", obj); + } else { + System.out.println("旁路已关闭"); + userService.call("Connor_close_bypass", obj); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + public void setTableCellBackgroundByLastColumn(JTable table, int y) { + // 设置渲染器 + DefaultTableCellRenderer renderer = new DefaultTableCellRenderer() { + public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { + Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); + String grade = (String) table.getValueAt(row, table.getColumnCount() - y); + if (grade.contains("延期") && !grade.contains("完成")) { + c.setBackground(Color.RED); + } else if (grade.contains("提前")) { + c.setBackground(Color.GREEN); + } else if (grade.contains("延期") && grade.contains("完成")) { + c.setBackground(Color.YELLOW); + } else { + c.setBackground(table.getBackground()); + } + return c; + } + }; + table.getColumnModel().getColumn(table.getColumnCount() - y).setCellRenderer(renderer); + } + + // 日期差 + public static int daysBetweenDates(Date date1, Date date2) { + long difference = date2.getTime() - date1.getTime(); + int num = (int) (difference / (1000 * 60 * 60 * 24)); + return num > 0 ? num : -num; + } + + // 排序并重新关联 + public List> sortByIndexAndUpdateMap(List> data, int index, + HashMap map, HashMap map2) { + System.out.println("重新排序"); + List> sortedList = new ArrayList<>(data); + // 冒泡排序 + if(sortedList.get(0).get(index-1).compareTo(sortedList.get(sortedList.size() -1 ).get(index-1)) < 0) { + System.out.println("从大到小"); + for (int i = 0; i < sortedList.size() - 1; i++) { + for (int j = 0; j < sortedList.size() - 1 - i; j++) { + List list1 = sortedList.get(j); + List list2 = sortedList.get(j + 1); + if (list1.get(index-1).compareTo(list2.get(index-1)) < 0) { + // list1的第i个元素小于list2的第i个元素,交换位置 + sortedList.set(j, list2); + sortedList.set(j + 1, list1); + } + } + } + } else { + System.out.println("从小到大"); + for (int i = 0; i < sortedList.size() - 1; i++) { + for (int j = 0; j < sortedList.size() - 1 - i; j++) { + List list1 = sortedList.get(j); + List list2 = sortedList.get(j + 1); + if (list1.get(index-1).compareTo(list2.get(index-1)) > 0) { + // list1的第i个元素小于list2的第i个元素,交换位置 + sortedList.set(j, list2); + sortedList.set(j + 1, list1); + } + } + } + } + + // 遍历List>,更新每个List的第一个元素 + for (int i = 0; i < sortedList.size(); i++) { + List list = sortedList.get(i); + list.set(0, String.valueOf(i + 1)); + } + + System.out.println("排序完成"); + return sortedList; + } + +} diff --git a/src/com/connor/mdbksplm/propertytowe/PropertyToWordOrExcelCommand.java b/src/com/connor/mdbksplm/propertytowe/PropertyToWordOrExcelCommand.java new file mode 100644 index 0000000..6695eb9 --- /dev/null +++ b/src/com/connor/mdbksplm/propertytowe/PropertyToWordOrExcelCommand.java @@ -0,0 +1,44 @@ +package com.connor.mdbksplm.propertytowe; + +import java.io.File; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; + +import com.teamcenter.rac.aif.AIFDesktop; +import com.teamcenter.rac.aif.AbstractAIFApplication; +import com.teamcenter.rac.aif.AbstractAIFCommand; +import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent; +import com.teamcenter.rac.aifrcp.AIFUtility; +import com.teamcenter.rac.kernel.TCComponent; +import com.teamcenter.rac.kernel.TCComponentDataset; +import com.teamcenter.rac.kernel.TCComponentItemRevision; +import com.teamcenter.rac.kernel.TCSession; +import com.teamcenter.rac.util.MessageBox; + + +public class PropertyToWordOrExcelCommand extends AbstractHandler{ + + final String preName = "Connor_WordExcel_Report_ItemType"; + @Override + public Object execute(ExecutionEvent arg0) throws ExecutionException { + + System.out.println("进入PropertyToWordOrExcelCommand"); + AbstractAIFApplication app = AIFUtility.getCurrentApplication(); + InterfaceAIFComponent tag = app.getTargetComponent(); + if (tag instanceof TCComponentItemRevision) { + TCSession session = (TCSession) app.getSession(); + PropertyToWordOrExcelOperation op = new PropertyToWordOrExcelOperation(session, app); + try { + op.executeOperation(); + } catch (Exception e) { + e.printStackTrace(); + } + } else { + MessageBox.post("请选择对象版本", "提示", MessageBox.INFORMATION); + } + return null; + } + +} diff --git a/src/com/connor/mdbksplm/propertytowe/PropertyToWordOrExcelOperation.java b/src/com/connor/mdbksplm/propertytowe/PropertyToWordOrExcelOperation.java new file mode 100644 index 0000000..6315e8a --- /dev/null +++ b/src/com/connor/mdbksplm/propertytowe/PropertyToWordOrExcelOperation.java @@ -0,0 +1,341 @@ +package com.connor.mdbksplm.propertytowe; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.poi.hssf.usermodel.HSSFCell; +import org.apache.poi.hssf.usermodel.HSSFName; +import org.apache.poi.hssf.usermodel.HSSFRow; +import org.apache.poi.hssf.usermodel.HSSFSheet; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.ss.util.CellReference; +import org.apache.poi.xssf.usermodel.XSSFCell; +import org.apache.poi.xssf.usermodel.XSSFName; +import org.apache.poi.xssf.usermodel.XSSFRow; +import org.apache.poi.xssf.usermodel.XSSFSheet; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; + +import com.aspose.words.Bookmark; +import com.aspose.words.Document; +import com.aspose.words.SaveFormat; +import com.teamcenter.rac.aif.AIFDesktop; +import com.teamcenter.rac.aif.AbstractAIFApplication; +import com.teamcenter.rac.aif.AbstractAIFOperation; +import com.teamcenter.rac.aif.kernel.AbstractAIFSession; +import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent; +import com.teamcenter.rac.kernel.TCComponent; +import com.teamcenter.rac.kernel.TCComponentDataset; +import com.teamcenter.rac.kernel.TCComponentItem; +import com.teamcenter.rac.kernel.TCComponentItemRevision; +import com.teamcenter.rac.kernel.TCComponentTcFile; +import com.teamcenter.rac.kernel.TCException; +import com.teamcenter.rac.kernel.TCPreferenceService; +import com.teamcenter.rac.kernel.TCProperty; +import com.teamcenter.rac.kernel.TCSession; +import com.teamcenter.rac.util.FileUtility; +import com.teamcenter.rac.util.MessageBox; + + +public class PropertyToWordOrExcelOperation extends AbstractAIFOperation { + + + final String preName = "Connor_WordExcel_Report_ItemType"; + + private TCSession session; + private AbstractAIFApplication app; + + public PropertyToWordOrExcelOperation(TCSession session,AbstractAIFApplication app) { + // TODO Auto-generated constructor stub + this.session = session; + this.app = app; + } + + + @Override + public void executeOperation() throws Exception { + // TODO Auto-generated method stub + init(); + } + + public boolean init() throws Exception { + new Thread().sleep(1000); + InterfaceAIFComponent targetComponent = app.getTargetComponent(); + TCComponentItemRevision revision = (TCComponentItemRevision) targetComponent; + // *2023/5/10修改,点了菜单后先刷新下数据再提取属性 + TCComponentItem item = revision.getItem(); + revision.refresh(); + item.refresh(); + // *结束 + TCPreferenceService preferenceService = session.getPreferenceService(); + String[] prefVals = preferenceService.getStringValues(preName); + if(prefVals == null || prefVals.length == 0) { + String str = preName + "该首选项未配置,请联系管理员!"; + System.out.println(str); + MessageBox.post(str, "提示", MessageBox.INFORMATION); + return false; + } + String relatioin = prefVals[0]; + TCComponent[] relatedComponents = revision.getRelatedComponents(relatioin); + if(relatedComponents == null || relatedComponents.length == 0) { + String str = "选中对象的 " + relatioin + " 关系下没有数据集"; + System.out.println(str); + MessageBox.post(str, "提示", MessageBox.INFORMATION); + return false; + } + //处理首选项 + HashMap nameMap = new HashMap();//数据集里面的名称和对象(item,rev,revMaster)集合 + if(prefVals.length >= 2) { + for (int i = 1; i < prefVals.length; i++) { + //Item.object_name=object_name + String[] split = prefVals[i].split("="); + nameMap.put(split[1],split[0]); + } + } + for (TCComponent tcComponent : relatedComponents) { + if (tcComponent instanceof TCComponentDataset) { + TCComponentDataset dataset = (TCComponentDataset) tcComponent; + File datasetFile = getDatasetFile(dataset); + String type = tcComponent.getType(); + String datasetType = ""; + String newPath = ""; + if("MSExcel".equals(type) || "MSExcelX".equals(type) || "MSWord".equals(type) || "MSWordX".equals(type)) { + switch (type) { + case "MSExcel": + datasetType = "excel"; + newPath = dealExcel(datasetFile,revision,nameMap); + break; + case "MSExcelX": + datasetType = "excel"; + newPath = dealExcelX(datasetFile,revision,nameMap); + break; + case "MSWord": + datasetType = "word"; + newPath = dealWord2(datasetFile,revision,nameMap,"doc"); + break; + case "MSWordX": + datasetType = "word"; + newPath = dealWord2(datasetFile,revision,nameMap,"docx"); + break; + } + //给数据集设置新的命名的引用 + dataset.setFiles(new String[] {newPath}, new String[] {datasetType}); + } + } + } + System.out.println("提取对象版本属性到Word Excel执行完成"); + MessageBox.post("提取对象版本属性到Word Excel执行完成", "提示", MessageBox.INFORMATION); + return true; + } + + + private String dealExcel(File datasetFile, TCComponentItemRevision revision, HashMap nameMap) throws IOException, TCException { + FileInputStream is = new FileInputStream(datasetFile); + HSSFWorkbook workbook = new HSSFWorkbook(is); + List allNames = workbook.getAllNames(); + for (HSSFName hssfName : allNames) { + String name = hssfName.getNameName(); + //名称管理器存在首选项的名称 + if (nameMap.containsKey(name)) { + CellReference cellReference = new CellReference(hssfName.getRefersToFormula()); + HSSFSheet sheet = workbook.getSheet(cellReference.getSheetName()); + String preConfigValue = getPreConfigValue(revision,nameMap,nameMap.get(name)); + System.out.println("行为:" + cellReference.getRow() + "====" + "列为:" + cellReference.getCol() + "====" + + "值为: " + preConfigValue); + HSSFRow row = sheet.getRow(cellReference.getRow()); + if(row == null) { +// row = row.createCell(cellReference.getCol()); + row = sheet.createRow(cellReference.getRow()); + System.out.println("创建第" + cellReference.getRow() + "行"); + } + + HSSFCell cell = row.getCell(cellReference.getCol()); + + if(cell == null) { + cell = row.createCell(cellReference.getCol()); + } + cell.setCellValue(preConfigValue); + + } + } + is.close(); + FileOutputStream os = new FileOutputStream(datasetFile); + workbook.write(os); + workbook.close(); + os.close(); + return datasetFile.getAbsolutePath(); + } + + private String dealExcelX(File datasetFile, TCComponentItemRevision revision, HashMap nameMap) throws IOException, TCException { + FileInputStream is = new FileInputStream(datasetFile); + XSSFWorkbook workbook = new XSSFWorkbook(is); + List allNames = workbook.getAllNames(); + for (XSSFName xssfName : allNames) { + String name = xssfName.getNameName(); + //名称管理器存在首选项的名称 + if (nameMap.containsKey(name)) { + CellReference cellReference = new CellReference(xssfName.getRefersToFormula()); + XSSFSheet sheet = workbook.getSheet(cellReference.getSheetName()); + String preConfigValue = getPreConfigValue(revision,nameMap,nameMap.get(name)); + System.out.println("行为:" + cellReference.getRow() + "====" + "列为:" + cellReference.getCol() + "====" + + "值为: " + preConfigValue); + XSSFRow row = sheet.getRow(cellReference.getRow()); + if(row == null) { +// row = row.createCell(cellReference.getCol()); + row = sheet.createRow(cellReference.getRow()); + System.out.println("创建第" + cellReference.getRow() + "行"); + } + XSSFCell cell = row.getCell(cellReference.getCol()); + if(cell == null) { + cell = row.createCell(cellReference.getCol()); + cell.setCellValue(preConfigValue); + } + else { + cell.setCellValue(preConfigValue); + } + } + } + is.close(); + FileOutputStream os = new FileOutputStream(datasetFile); + workbook.write(os); + workbook.close(); + os.close(); + return datasetFile.getAbsolutePath(); + } + + private String dealWord(File datasetFile, TCComponentItemRevision revision, HashMap nameMap,String type) throws IOException, TCException { + String path = datasetFile.getAbsolutePath(); + InputStream inputStream = Files.newInputStream(Paths.get(path)); + Map dataMap = new HashMap<>(); + for(String key : nameMap.keySet()) { + String preConfigValue = getPreConfigValue(revision,nameMap,nameMap.get(key)); + dataMap.put(key, preConfigValue); + } + String newPath = ""; + if(type.equals("doc")) { + newPath = path.replace(".doc", "temp.doc"); + WordUtils.replaceBookmarksByDoc(inputStream, Files.newOutputStream(Paths.get(newPath)), dataMap); + } + else if(type.equals("docx")) { + newPath = path.replace(".docx", "temp.docx"); + WordUtils.replaceBookmarksByDocx(inputStream, Files.newOutputStream(Paths.get(newPath)), dataMap); + } + return newPath; + } + + private String dealWord2(File datasetFile, TCComponentItemRevision revision, HashMap nameMap,String type) throws FileNotFoundException, Exception { + String path = datasetFile.getAbsolutePath(); + Document document2 = new Document(new FileInputStream(path)); + OutputStream outputStream = null; + String newPath = path.replace(".doc", "temp.doc"); + outputStream = new FileOutputStream(newPath); + Map dataMap = new HashMap<>(); + for(String key : nameMap.keySet()) { + String preConfigValue = getPreConfigValue(revision,nameMap,nameMap.get(key)); + dataMap.put(key, preConfigValue); + } + for (Bookmark bookmark : document2.getRange().getBookmarks()) { + String bookmarkName = bookmark.getName(); + System.out.println("书签名:"+bookmarkName); + if(dataMap.containsKey(bookmarkName)) + { + System.out.println("添加内容"); + bookmark.setText(dataMap.get(bookmarkName)); + } + } + if(type.equals("doc")) { + document2.save(outputStream, SaveFormat.DOC); + }else if(type.equals("docx")) { + document2.save(outputStream, SaveFormat.DOCX); + } + return newPath; + } + + /** + * 得到首选项中“=”左边对应的属性值 + * @param revision + * @param nameMap + * @param value + * @return + * @throws TCException + */ + private String getPreConfigValue(TCComponentItemRevision revision, HashMap nameMap,String value) throws TCException { + String[] split = value.split("\\."); + String cellValue = ""; + TCProperty property = null; + if(split.length == 2) { + switch (split[0]) { + case "Item": + property = revision.getItem().getTCProperty(split[1]); + break; + case "Rev": + property = revision.getTCProperty(split[1]); + break; + case "RevMaster": + property = revision.getRelatedComponent("IMAN_master_form_rev").getTCProperty(split[1]); + break; + default: + break; + } + } + //取关系文件夹下的属性 + else if(split.length == 3) { + String relation = split[0]; + TCComponent relatedComponent = revision.getRelatedComponent(relation); + TCComponentItemRevision centerRev = null; + if(relatedComponent instanceof TCComponentItemRevision) { + centerRev = (TCComponentItemRevision) relatedComponent; + }else if(relatedComponent instanceof TCComponentItem) { + centerRev = ((TCComponentItem) relatedComponent).getLatestItemRevision(); + } + if(centerRev != null) { + switch (split[1]) { + case "Item": + property = centerRev.getItem().getTCProperty(split[2]); + break; + case "Rev": + property = centerRev.getTCProperty(split[2]); + break; + case "RevMaster": + property = centerRev.getRelatedComponent("IMAN_master_form_rev").getTCProperty(split[2]); + break; + default: + break; + } + } + } + if(property == null) { + return ""; + } + else { + cellValue = property.getDisplayValue(); + return cellValue; + } + } + + public static File getDatasetFile(TCComponentDataset dataset) throws Exception { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日HH时mm分"); + String format = sdf.format(new Date()); +// String fileName = "提取属性到Word/Excel-" + format + ".xlsx"; +// System.out.println("fileName:" + fileName); + File[] files = dataset.getFiles("", System.getenv("TEMP")); + if (files == null || files.length == 0) { + throw new Exception(); + } + System.out.println(">> Download file (" + files.length + "): " + files[0].getAbsolutePath()); + return files[0]; + } + + +} diff --git a/src/com/connor/mdbksplm/propertytowe/WordUtils.java b/src/com/connor/mdbksplm/propertytowe/WordUtils.java new file mode 100644 index 0000000..62ecfbd --- /dev/null +++ b/src/com/connor/mdbksplm/propertytowe/WordUtils.java @@ -0,0 +1,168 @@ +package com.connor.mdbksplm.propertytowe; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.poi.hwpf.HWPFDocument; +import org.apache.poi.hwpf.usermodel.Bookmark; +import org.apache.poi.hwpf.usermodel.Bookmarks; +import org.apache.poi.hwpf.usermodel.Range; +import org.apache.poi.xwpf.usermodel.XWPFDocument; +import org.apache.poi.xwpf.usermodel.XWPFParagraph; +import org.apache.poi.xwpf.usermodel.XWPFRun; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBookmark; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP; +import org.w3c.dom.Node; + +public class WordUtils { + + public static final String RUN_NODE_NAME = "w:r"; + public static final String TEXT_NODE_NAME = "w:t"; + public static final String BOOKMARK_START_TAG = "w:bookmarkStart"; + public static final String BOOKMARK_END_TAG = "w:bookmarkEnd"; + public static final String BOOKMARK_ID_ATTR_NAME = "w:id"; + public static final String STYLE_NODE_NAME = "w:rPr"; + + public static void main(String[] args) throws IOException { + // 替换文件中的 bookmark 内容 + InputStream inputStream3 = Files.newInputStream(Paths.get("C:\\Users\\Administrator\\Desktop\\测试文件夹\\22.doc")); + Map dataMap = new HashMap<>(); + dataMap.put("one", "oneoneoneoneone"); + dataMap.put("two", "twotwotwotwo"); + dataMap.put("three", "ceshi"); + replaceBookmarksByDoc(inputStream3, Files.newOutputStream(Paths.get("C:\\Users\\Administrator\\Desktop\\测试文件夹\\33.doc")), dataMap); + } + + /** + * 读取 doc 文件中的所有书签 + * + * @param inputStream + * @throws IOException + */ + public static void getBookmarksByDoc(InputStream inputStream) throws IOException { + HWPFDocument wordDoc = new HWPFDocument(inputStream); + + Bookmarks bookmarks = wordDoc.getBookmarks(); + + for (int b = 0; b < bookmarks.getBookmarksCount(); b++) { + Bookmark bookmark = bookmarks.getBookmark(b); + String bookMarkText = new Range(bookmark.getStart(), bookmark.getEnd(), wordDoc).text(); + + System.out.println("[" + bookmark.getStart() + "; " + + bookmark.getEnd() + "]: " + bookmark.getName() + " = " + bookMarkText); + } + + } + + /** + * 读取 docx 文件中的所有书签 + * + * @param inputStream + * @throws IOException + */ + public static void getBookmarksByDocx(InputStream inputStream) throws IOException { + XWPFDocument docx = new XWPFDocument(inputStream); + + List paragraphList = docx.getParagraphs(); + for (XWPFParagraph xwpfParagraph : paragraphList) { + CTP ctp = xwpfParagraph.getCTP(); + + for (int dwI = 0; dwI < ctp.sizeOfBookmarkStartArray(); dwI++) { + CTBookmark bookmark = ctp.getBookmarkStartArray(dwI); + String bookmarkName = bookmark.getName(); + + // 因为 docx 的结构是xml格式,它不像 doc 文档那样有具体的start和end值来定位一个bookmark的值范围, + // 所有如果你想要读取 docx 文档中bookmark的内容,你需要从 bookmarkStart 节点开始逐级逐层依次解析xml文 + // 件的 nodeValue 值并进行拼接,直至读取到下一个名为 bookmarkEnd 的节点为止。 + // 下面这个方法 getBookmarkTextContent() 是一个没有实现的方法,如有需要请自行实现 + // String bookmarkTextContent = getBookmarkTextContent(bookmark); + + System.out.println(bookmarkName); + } + } + } + + + /** + * docx 文件中书签的替换 + * + * @param inputStream + * @param outputStream + * @param dataMap + * @throws IOException + */ + public static void replaceBookmarksByDocx(InputStream inputStream, OutputStream outputStream, Map dataMap) throws IOException { + XWPFDocument document = new XWPFDocument(inputStream).getXWPFDocument(); + List paragraphList = document.getParagraphs(); + for (XWPFParagraph xwpfParagraph : paragraphList) { + CTP ctp = xwpfParagraph.getCTP(); + + for (int dwI = 0; dwI < ctp.sizeOfBookmarkStartArray(); dwI++) { + CTBookmark bookmark = ctp.getBookmarkStartArray(dwI); + if (dataMap.containsKey(bookmark.getName())) { + + XWPFRun run = xwpfParagraph.createRun(); + run.setText(dataMap.get(bookmark.getName())); + + Node firstNode = bookmark.getDomNode(); + Node nextNode = firstNode.getNextSibling(); + while (nextNode != null) { + // 循环查找结束符 + String nodeName = nextNode.getNodeName(); + if (nodeName.equals(BOOKMARK_END_TAG)) { + break; + } + + // 删除中间的非结束节点,即删除原书签内容 + Node delNode = nextNode; + nextNode = nextNode.getNextSibling(); + + ctp.getDomNode().removeChild(delNode); + } + + if (nextNode == null) { + // 始终找不到结束标识的,就在书签前面添加 + ctp.getDomNode().insertBefore(run.getCTR().getDomNode(), firstNode); + } else { + // 找到结束符,将新内容添加到结束符之前,即内容写入bookmark中间 + ctp.getDomNode().insertBefore(run.getCTR().getDomNode(), nextNode); + } + } + } + } + + document.write(outputStream); + document.close(); + } + + + /** + * doc 文件中书签的替换 + * + * @param inputStream + * @param outputStream + * @param dataMap + * @throws IOException + */ + public static void replaceBookmarksByDoc(InputStream inputStream, OutputStream outputStream, + Map dataMap) throws IOException { + HWPFDocument document = new HWPFDocument(inputStream); + Bookmarks bookmarks = document.getBookmarks(); + for (int dwI = 0; dwI < bookmarks.getBookmarksCount(); dwI++) { + Bookmark bookmark = bookmarks.getBookmark(dwI); + if (dataMap.containsKey(bookmark.getName())) { + Range range = new Range(bookmark.getStart(), bookmark.getEnd(), document); + range.replaceText(dataMap.get(bookmark.getName()), false); + } + } + document.write(outputStream); + } +} + + diff --git a/src/com/connor/mdbksplm/treamlist/CNProperty.java b/src/com/connor/mdbksplm/treamlist/CNProperty.java new file mode 100644 index 0000000..b0d4403 --- /dev/null +++ b/src/com/connor/mdbksplm/treamlist/CNProperty.java @@ -0,0 +1,241 @@ +package com.connor.mdbksplm.treamlist; + +/** + * @copyRight 浙江康勒科技有限公司 + * @author 作者 E-mail:hub@connor.net.cn + * @date 创建时间:2017-7-2 下午7:59:01 + * @version v1.0 + * @parameter + * @since + * @return + */ + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.HashMap; + +import javax.xml.bind.annotation.XmlAttribute; + +import com.teamcenter.rac.aifrcp.AIFUtility; +import com.teamcenter.rac.kernel.ListOfValuesInfo; +import com.teamcenter.rac.kernel.TCComponentListOfValues; +import com.teamcenter.rac.kernel.TCComponentListOfValuesType; +import com.teamcenter.rac.kernel.TCException; +import com.teamcenter.rac.kernel.TCProperty; +import com.teamcenter.rac.kernel.TCSession; +import com.teamcenter.rac.ui.common.RACUIUtil; +import com.teamcenter.services.rac.core.LOVService; +import com.teamcenter.services.rac.core._2013_05.LOV.InitialLovData; +import com.teamcenter.services.rac.core._2013_05.LOV.LOVSearchResults; +import com.teamcenter.services.rac.core._2013_05.LOV.LOVValueRow; +import com.teamcenter.services.rac.core._2013_05.LOV.LovFilterData; +import com.teamcenter.soa.client.model.LovValue; + +public class CNProperty { + // + String lovName; // lov属性名称 + Boolean isLov = true; // 是否是lov + Boolean isMust; // 是否必须 + String propertyType;// 属性类型 + String displayName;// 显示名称 + String realName;// 属性真实名称 + String defaultValue; + public List lovValueList; + public List lovDisplayValueList; + public int selectIndex = -1; + public Object value; + public TCComponentListOfValues lov; + public HashMap lovDesc = new HashMap<>(); + + public void initProperty() { + try { + this.lovValueList = new ArrayList<>(); + this.lovDisplayValueList = new ArrayList<>(); + if (this.isLov) { + lov = TCComponentListOfValuesType.findLOVByName(lovName); + if (lov != null) { + + if ("Fnd0ListOfValuesDynamic".equals(lov.getProperty("lov_type"))) { + + /* + * MessageBox.post(""+lov.getNumberOfLOVFilters(),"",MessageBox.INFORMATION);; + * TCComponentListOfValues[] fLovs= new TCComponentListOfValues[0] + * ;//lov.getNumberOfLOVFilters(); + * + * for(TCComponentListOfValues flov : fLovs) { + * + * ListOfValuesInfo info = flov.getListOfValues(true); + * info.getLOVDisplayValues(); List lovValueList = info.getValues(); + * for (LovValue lovV : lovValueList) { + * this.lovDisplayValueList.add(lovV.getDisplayValue()); + * this.lovValueList.add(lovV.getStringValue()); } + * + * } + */ + // lov.PROP_LOV_VALUE_FILTERS; + System.out.println("动态lovName=" + lovName); + + LOVService lovService = LOVService.getService(RACUIUtil.getTCSession()); + InitialLovData input = new InitialLovData(); + LovFilterData filter = new LovFilterData(); + filter.sortPropertyName = "object_name"; // lov的后台值 + filter.order = 1; + filter.numberToReturn = 100; + filter.maxResults = 100; + + input.lov = lov; + input.filterData = filter; + LOVSearchResults result = lovService.getInitialLOVValues(input); + + + for (LOVValueRow row : result.lovValues) { + Map map = row.propDisplayValues; + Map realmap = row.propInternalValues; + + String desc = ""; + String name = ""; + for (String key : map.keySet()) { + System.out.println("key=" + key + ",value=" + map.get(key)[0]); + + // * + if(key.equals("mt8_lovdesc")) { + desc = map.get(key)[0] != null ? map.get(key)[0] : ""; + } + if(key.equals("object_name")) { + name = map.get(key)[0] != null ? map.get(key)[0] : ""; + } + // * + + } + lovDesc.put(name, desc); + for (String key : realmap.keySet()) { + System.out.println("key2=" + key + ",value2=" + map.get(key)[0]); + } + String disval = ""; + String val = ""; + String key1 = "object_name";// 真实值 显示值第一列 + String key2 = "object_desc";// 显示值第二列 + String key3 = "mt8_lovdesc"; + + if (map.containsKey(key1)) { + val = realmap.get(key1)[0]; + disval = map.get(key1)[0]; + } + if (map.containsKey(key2)) { + String tempval = map.get(key2)[0]; + if (!tempval.equals("") && !lovName.equals("LB2_QD")) { + disval = disval + " " + tempval; + } + } + + if (!val.equals("")) { + this.lovDisplayValueList.add(disval); + this.lovValueList.add(val); + } + + } + + } else { + + ListOfValuesInfo info = lov.getListOfValues(); + info.getLOVDisplayValues(); + List lovValueList = info.getValues(); + for (LovValue lovV : lovValueList) { + this.lovDisplayValueList.add(lovV.getDisplayValue()); + this.lovValueList.add(lovV.getStringValue()); + } + } + + } + + } + } catch (TCException e) { + e.printStackTrace(); + } + + } + + public CNProperty() { + } + + public CNProperty(String realName, String displayName, String propertyType, Boolean isMust, Boolean isLov, + String lovName) { + this.realName = realName; + this.displayName = displayName; + this.propertyType = propertyType; + this.isMust = isMust; + this.isLov = isLov; + this.lovName = lovName; + } + + @XmlAttribute(name = "defaultValue") + public String getDefaultValue() { + return defaultValue; + } + + public void setDefaultValue(String defaultValue) { + this.defaultValue = defaultValue; + } + + @XmlAttribute(name = "lovName") + public String getLovName() { + return lovName; + } + + public void setLovName(String lovName) { + this.lovName = lovName; + } + + @XmlAttribute(name = "isLov") + public Boolean getIsLov() { + return isLov; + } + + public void setIsLov(Boolean isLov) { + this.isLov = isLov; + } + + @XmlAttribute(name = "isMust") + public Boolean getIsMust() { + return isMust; + } + + public void setIsMust(Boolean isMust) { + this.isMust = isMust; + } + + @XmlAttribute(name = "propertyType") + public String getPropertyType() { + return propertyType; + } + + public void setPropertyType(String propertyType) { + this.propertyType = propertyType; + } + + @XmlAttribute(name = "displayName") + public String getDisplayName() { + return displayName; + } + + public void setDisplayName(String displayName) { + this.displayName = displayName; + } + + @XmlAttribute(name = "realName") + public String getRealName() { + return realName; + } + + public void setRealName(String realName) { + this.realName = realName; + } + + public HashMap getLovDesc(){ + return lovDesc; + + } +} \ No newline at end of file diff --git a/src/com/connor/mdbksplm/treamlist/FormCheckUtil.java b/src/com/connor/mdbksplm/treamlist/FormCheckUtil.java new file mode 100644 index 0000000..05e4712 --- /dev/null +++ b/src/com/connor/mdbksplm/treamlist/FormCheckUtil.java @@ -0,0 +1,258 @@ +package com.connor.mdbksplm.treamlist; + +import java.awt.Color; +import java.awt.Component; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map.Entry; +import java.util.Vector; + +import javax.swing.JButton; +import javax.swing.JCheckBox; +import javax.swing.JComboBox; +import javax.swing.JRadioButton; +import javax.swing.JTable; +import javax.swing.JTextArea; + +import com.teamcenter.rac.kernel.TCComponent; +import com.teamcenter.rac.kernel.TCComponentForm; +import com.teamcenter.rac.kernel.TCComponentRuleHandler; +import com.teamcenter.rac.kernel.TCComponentTask; +import com.teamcenter.rac.kernel.TCComponentTaskTemplate; +import com.teamcenter.rac.kernel.TCComponentUser; +import com.teamcenter.rac.kernel.TCException; +import com.teamcenter.rac.kernel.TCHandlerType; +import com.teamcenter.rac.kernel.TCSession; +import com.teamcenter.rac.util.DateButton; +import com.teamcenter.rac.util.iTextField; + +@SuppressWarnings("deprecation") +public class FormCheckUtil { + private TCComponentForm tcform; + private HashMap allComponents = new HashMap(); + public boolean isNeedCheck = false; + public Vector vtModifiableAttr = new Vector(); // 可修改属性 + public Vector vtReqAttr = new Vector(); // 必填属性 + + public FormCheckUtil(TCComponentForm tcform, HashMap allComponents) { + this.tcform = tcform; + this.allComponents = allComponents; + } + + + public boolean isNeedCheck() { + return isNeedCheck; + } + + + public void setNeedCheck(boolean isNeedCheck) { + this.isNeedCheck = isNeedCheck; + } + + /** + * checkHandler:获取Hander中配置的参数 + */ + public void checkHandler() { + //System.out.println("checkHandler ....start"); + try { + TCComponent[] component = tcform.getReferenceListProperty("process_stage_list"); + //System.out.println("component.length=============" + component.length); + if(component == null || component.length == 0){ + return; + } + Vector componentV = new Vector(); + for(TCComponent c : component) { + System.out.println("componentV=============" + c); + componentV.add(c); + } +// String strProcessStage = tcform.getProperty("process_stage"); + TCComponent[] strProcessStage = tcform.getReferenceListProperty("process_stage_list"); + String strProcess = ""; +// if(strProcessStage.indexOf(",")>strProcessStage.indexOf("/")+ 1) { +// strProcess = strProcessStage.substring(strProcessStage.indexOf("/")+ 1,strProcessStage.indexOf(","));//lidy20181001 TODO +// } else +// strProcess = strProcessStage.substring(strProcessStage.indexOf("/")+ 1); + if(strProcessStage!=null) { + if(strProcessStage.length>1) + strProcess = strProcessStage[1].getReferenceProperty("parent_process").toString(); + else + strProcess = strProcessStage[0].getReferenceProperty("parent_process").toString(); + } + System.out.println("strProcess = " + strProcess); + + TCComponentTask task = null; + TCSession session = tcform.getSession(); + TCComponentUser user = session.getUser(); + TCComponent taskinbox = user.getReferenceProperty("taskinbox"); + TCComponent[] tasks = taskinbox.getReferenceListProperty("contents"); + //System.out.println("tasks.length=============" + tasks.length); + for(int i = 0; i < tasks.length ; i++){ + if(tasks[i].getType().equals("TasksToPerform")){ + TCComponent[] mytasks = tasks[i].getReferenceListProperty("contents"); + System.out.println("mytasks.length=============" + mytasks.length); + for(int j = 0 ; j < mytasks.length ;j++){ + TCComponent parentProcess = mytasks[j].getReferenceProperty("parent_process"); + System.out.println("parentProcess=============" + parentProcess); + if(strProcess.equals(parentProcess.toString())){ +// if(componentV.contains(parentProcess)){//TODO lidy20190115 + TCComponent taskparent = null; + String strTaskType = mytasks[j].getType(); + System.out.println("strTaskType = " + strTaskType); + if(strTaskType.equals("EPMConditionTask") || + strTaskType.equals("EPMDoTask") || + strTaskType.equals("EPMTask") || + strTaskType.equals("EPMAcknowledgeTask") || + strTaskType.equals("EPMReviewTask")){ + taskparent = mytasks[j]; + }else{ + taskparent = mytasks[j].getReferenceProperty("parent_task"); + } + for(int k = 1; k < component.length ; k ++){ + System.out.println("taskparent.getUid()======" + taskparent.getUid() + "======component[k].getUid()======" + component[k].getUid()); + if(taskparent.equals(component[k])){ + task = (TCComponentTask) taskparent; + break; + } + } + } + } + } + } + if(task == null){ + return; + } + System.out.println("task = " + task); + String strFormType = tcform.getType(); + System.out.println("strFormType = " + strFormType); + + TCComponent handlerComponent = task.getHandler(TCHandlerType.RULE, TCComponentTaskTemplate.START_ACTION, "EPMC_check_form_attribute"); + System.out.println("handlerComponent = " + handlerComponent); + if (handlerComponent != null && handlerComponent instanceof TCComponentRuleHandler) { + TCComponentRuleHandler handler = (TCComponentRuleHandler) handlerComponent; + String[] args = handler.getArguments(); + if (args != null && args.length > 0) { + for (int i = 0; i < args.length; i++) { + System.out.println("args[" + i + "]:::::::::::" + args[i]); + String argumentValue = args[i].split("=")[1]; + if (args[i].startsWith("-form_type")) { + argumentValue = argumentValue.replace(";", ";"); + if (argumentValue.contains(";")) { + String[] arrValue = argumentValue.split(";"); + for (int j = 0; j < arrValue.length; j++) { + if(strFormType.equals(arrValue[j])){ + isNeedCheck = true; + break; + } + } + } else { + if(strFormType.equals(argumentValue)){ + isNeedCheck = true; + } + } + System.out.println("Form类型(form_type)::::" + argumentValue); + } else if (args[i].startsWith("-modifiable_attr")) { + argumentValue = argumentValue.replace(";", ";"); + if (argumentValue.contains(";")) { + String[] arrValue = argumentValue.split(";"); + for (int j = 0; j < arrValue.length; j++) { + vtModifiableAttr.add(arrValue[j]); + } + } else { + vtModifiableAttr.add(argumentValue); + } + System.out.println("Form可写属性(modifiable_attr)::::" + argumentValue); + } else if (args[i].startsWith("-require_attr")) { + argumentValue = argumentValue.replace(";", ";"); + if (argumentValue.contains(";")) { + String[] arrValue = argumentValue.split(";"); + for (int j = 0; j < arrValue.length; j++) { + vtReqAttr.add(arrValue[j]); + } + } else { + vtReqAttr.add(argumentValue); + } + System.out.println("Form必填属性(require_attr)::::" + argumentValue); + } + } + } + } + System.out.println("isNeedCheck = " + isNeedCheck); + System.out.println("vtModifiableAttr = " + vtModifiableAttr); + System.out.println("vtReqAttr = " + vtReqAttr); + } catch (TCException e) { + e.printStackTrace(); + } + //System.out.println("checkHandler ....end"); + } + + /** + * setEnable:设置属性可编辑 + */ + @SuppressWarnings("unchecked") + public void setEnable() { + System.out.println("setEnable()...start"); + //FormUtilApi formApi = new FormUtilApi(tcform.getSession()); + if (vtModifiableAttr.size() > 0) { + Iterator> iter = allComponents.entrySet().iterator(); + while(iter.hasNext()) { + Entry entry = (Entry)iter.next(); + String name = (String)entry.getKey(); + Component component = (Component)entry.getValue(); + if(!vtModifiableAttr.contains(name)){ + if (component instanceof iTextField || + component instanceof DateButton || + component instanceof JButton || + component instanceof JRadioButton || + component instanceof JCheckBox || + component instanceof JTextArea || + component instanceof JTable || + component instanceof JComboBox) { + component.setEnabled(false); + } else { + component.setEnabled(true); + } + continue; + } + if (component instanceof iTextField) { + iTextField textField = (iTextField) component; + System.out.println("iTextField-" + name + "=======setEnabled"); + textField.setEnabled(true); + textField.setEditable(true); + }else if(component instanceof JTextArea){ + JTextArea areaField = (JTextArea) component; + System.out.println("JTextArea-" + name + "=======setEnabled"); + areaField.setEnabled(true); + areaField.setEditable(true); + areaField.setBackground(Color.WHITE); + }else if(component instanceof JComboBox){ + JComboBox cbo = (JComboBox) component; + System.out.println("JComboBox-" + name + "=======setEnabled"); + cbo.setEnabled(true); + //cbo.setEditable(true); + cbo.setBackground(Color.white); + }else if(component instanceof DateButton){ + DateButton datebtn = (DateButton) component; + System.out.println("DateButton-" + name + "=======setEnabled"); + datebtn.setEnabled(true); + }else if(component instanceof JButton){ + JButton btn = (JButton) component; + System.out.println("JButton-" + name + "=======setEnabled"); + btn.setEnabled(true); + }else if(component instanceof JCheckBox){ + JCheckBox btn = (JCheckBox) component; + System.out.println("JCheckBox-" + name + "=======setEnabled"); + btn.setEnabled(true); + }else if(component instanceof JTable){ + JTable table = (JTable) component; + System.out.println("JTable-" + name + "=======setEnabled"); + table.setEnabled(true); + } + } + } + System.out.println("setEnable()...end"); + } + +// private Boolean inProcess(TCComponent target, TCComponent process) { +// return false; +// } +} diff --git a/src/com/connor/mdbksplm/util/BusyLabelDemo.java b/src/com/connor/mdbksplm/util/BusyLabelDemo.java new file mode 100644 index 0000000..7260cf3 --- /dev/null +++ b/src/com/connor/mdbksplm/util/BusyLabelDemo.java @@ -0,0 +1,42 @@ +package com.connor.mdbksplm.util; + +import org.jdesktop.swingx.JXBusyLabel; +import javax.swing.JFrame; +import javax.swing.JPanel; +import java.awt.BorderLayout; +import java.awt.Dimension; + +public class BusyLabelDemo { + private JFrame frame; + private JPanel panel; + private JXBusyLabel busyLabel; + public BusyLabelDemo() { + frame = new JFrame("加载中,请稍等......"); + panel = new JPanel(new BorderLayout()); + busyLabel = new JXBusyLabel(); + panel.add(busyLabel, BorderLayout.CENTER); + frame.add(panel); + frame.setPreferredSize(new Dimension(400, 100)); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + frame.pack(); + frame.setLocationRelativeTo(null); + } + public void showBusyLabel() { + busyLabel.setBusy(true); + frame.setVisible(true); + } + public void hideBusyLabel() { + busyLabel.setBusy(false); + frame.setVisible(false); + } +// public static void main(String[] args) { +// BusyLabelDemo demo = new BusyLabelDemo(); +// demo.showBusyLabel(); +// try { +// Thread.sleep(5000); +// } catch (InterruptedException e) { +// e.printStackTrace(); +// } +// demo.hideBusyLabel(); +// } +} diff --git a/src/com/connor/mdbksplm/util/ConnorUtils.java b/src/com/connor/mdbksplm/util/ConnorUtils.java new file mode 100644 index 0000000..f758f1d --- /dev/null +++ b/src/com/connor/mdbksplm/util/ConnorUtils.java @@ -0,0 +1,440 @@ +package com.connor.mdbksplm.util; + +import java.awt.Component; +import java.awt.Dialog; +import java.awt.Window; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.OutputStream; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import javax.swing.JFileChooser; +import javax.swing.JTable; +import javax.swing.filechooser.FileSystemView; +import javax.swing.table.TableColumn; + + +import com.teamcenter.rac.aifrcp.AIFUtility; +import com.teamcenter.rac.kernel.ListOfValuesInfo; +import com.teamcenter.rac.kernel.TCComponent; +import com.teamcenter.rac.kernel.TCComponentDataset; +import com.teamcenter.rac.kernel.TCComponentForm; +import com.teamcenter.rac.kernel.TCComponentICO; +import com.teamcenter.rac.kernel.TCComponentItem; +import com.teamcenter.rac.kernel.TCComponentItemRevision; +import com.teamcenter.rac.kernel.TCComponentListOfValues; +import com.teamcenter.rac.kernel.TCComponentListOfValuesType; +import com.teamcenter.rac.kernel.TCException; +import com.teamcenter.rac.kernel.TCPreferenceService; +import com.teamcenter.rac.kernel.TCSession; +import com.teamcenter.rac.kernel.TCUserService; +import com.teamcenter.rac.kernel.ics.ICSProperty; +import com.teamcenter.rac.kernel.ics.ICSPropertyDescription; +import com.teamcenter.rac.stylesheet.AbstractRendering; +import com.teamcenter.rac.util.MessageBox; +import com.teamcenter.rac.util.Utilities; + + +public class ConnorUtils { + //TC的服务 + public static TCPreferenceService service; + public static TCSession session; + public static TCUserService userService; + static { + if (session == null) { + session = (TCSession) (AIFUtility.getCurrentApplication().getSession()); + } + if (service == null) + service = session.getPreferenceService(); + } + + public static boolean isEmpty(String str) { + return str == null || "".equals(str.trim()); + } + + /** + * 将日期对象转换为字符串 + * @param sdf SimpleDateFormat对象 + * @param date 日期对象 + * @return 日期的字符串对象 + */ + public static String getDate2String(SimpleDateFormat sdf, Date date) { + if (sdf == null || date == null) { + return ""; + } + return sdf.format(date); + } + + /** + * 获取多值得首选项 + * + * @param prefName 首先项名称 + * @param split 分割符 + * @return HashMap形式的首选项内容 + */ + public static LinkedHashMap getPrefStrHashMap(String prefName, String split) { + LinkedHashMap map = new LinkedHashMap(); + String[] strs = service.getStringArray(TCPreferenceService.TC_preference_site, prefName); + if (strs != null) { + for (String str : strs) { + String temp[] = str.split(split); + if(temp!=null) { + if(temp.length==2) { + map.put(temp[0], temp[1]); + }else { + map.put(temp[0],""); + } + } + } + } + return map; + } + /** + * 获取多值的首选项 + * + * @param prefName 首先项名称 + * @param split 分割符 + * @return + */ + public static HashMap> getPrefListHashMap(String prefName, String split) { + HashMap> map = new HashMap>(); + String[] strs = service.getStringArray(TCPreferenceService.TC_preference_site, prefName); + if (strs != null) { + for (String str : strs) { + String temp[] = str.split(split); + if(temp!=null) { + if(map.containsKey(temp[0])) { + List list = map.get(temp[0]); + if(list==null) { + list = new ArrayList(); + } + if(temp.length==2) { + list.add(temp[1]); + }else { + list.add(""); + } + }else { + List list = new ArrayList(); + if(temp.length==2) { + list.add(temp[1]); + }else { + list.add(""); + } + map.put(temp[0], list); + } + } + } + } + return map; + } + + public static String getPrefValue(String prefName){ + return service.getStringValue(prefName); + } + + public static String[] getPrefValues(String prefName){ + return service.getStringValues(prefName); + } + + public static void setByPass(boolean val) { + try { + if (userService == null) { + userService = ConnorUtils.session.getUserService(); + } + Object[] obj = new Object[1]; + obj[0] = ""; + if (val) { + userService.call("Connor_set_bypass", obj); + } else { + userService.call("Connor_close_bypass", obj); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * 通过puid获取模板 + * @param templetePuid 模板的puid + * + * @return 模板文件 + * + */ + public static File getTempleteData(String templetePuid){ + + if(templetePuid==null) { + return null; + } + File file = null; + try { + TCComponentDataset dataset = (TCComponentDataset) session.stringToComponent(templetePuid); + String[] types = dataset.getProperty("ref_names").split(","); + String temp = System.getenv("temp"); + File[] files = dataset.getFiles(types[0],temp); + if(files!=null && files.length>0) { + file = files[0]; + } + } catch (Exception e) { + MessageBox.post("错误:"+e.getMessage(),"错误", 2); + return null; + } + if(file == null || !file.exists()) { + MessageBox.post("数据集的puid:"+templetePuid+"的模板下载失败","错误", 2); + return null; + } + return file; + } + + public static Connection getOracleConnection() { + Connection connection=null; + try { + // 加载驱动程序 + Class.forName("oracle.jdbc.driver.OracleDriver"); + String[] dbinfos = ConnorUtils.getPrefValues("OA_GET_COST_Conn"); + String user = dbinfos[0]; + String password = dbinfos[1]; + String url = "jdbc:oracle:thin:@" + dbinfos[2]; + connection = DriverManager.getConnection(url, user, password); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + MessageBox.post("数据库连接失败,失败原因:"+e.getMessage(),"提示",MessageBox.INFORMATION); + } catch (SQLException e) { + e.printStackTrace(); + MessageBox.post("数据库连接失败,失败原因:"+e.getMessage(),"提示",MessageBox.INFORMATION); + } + return connection; + } + + public static Connection getSqlServerConnection() { + Connection connection=null; + try { + // 加载驱动程序 + Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); + String[] dbinfos = ConnorUtils.getPrefValues("MT_dbinfo"); + String user = dbinfos[0]; + String password = dbinfos[1]; + String url = "jdbc:sqlserver://"+dbinfos[3] +":1433;DataBaseName=" + dbinfos[2]; + connection = DriverManager.getConnection(url, user, password); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + MessageBox.post("数据库连接失败,失败原因:"+e.getMessage(),"提示",MessageBox.INFORMATION); + } catch (SQLException e) { + e.printStackTrace(); + MessageBox.post("数据库连接失败,失败原因:"+e.getMessage(),"提示",MessageBox.INFORMATION); + } + return connection; + } + + public static Connection getERPConnection() { + Connection connection=null; + try { + // 加载驱动程序 + Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); + String[] dbinfos = ConnorUtils.getPrefValues("MT_ERP_DBinfo"); + String user = dbinfos[0]; + String password = dbinfos[1]; + String url = "jdbc:sqlserver://"+dbinfos[3] +";DataBaseName=" + dbinfos[2]; + connection = DriverManager.getConnection(url, user, password); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + MessageBox.post("数据库连接失败,失败原因:"+e.getMessage(),"提示",MessageBox.INFORMATION); + } catch (SQLException e) { + e.printStackTrace(); + MessageBox.post("数据库连接失败,失败原因:"+e.getMessage(),"提示",MessageBox.INFORMATION); + } + return connection; + } + + public static void ChangeValue(String[] value1,String[] value2) { + String[] temp; + temp = value1; + value1 = value2; + value2 = temp; + } + /** + * 打开文件管理器 + * @param parent + * @return + */ + public static File chooseDirectory(Component parent) { + FileSystemView fsv = FileSystemView.getFileSystemView(); + String deskPath = fsv.getHomeDirectory().getPath(); + JFileChooser fileChooser = new JFileChooser(); + fileChooser.setCurrentDirectory(new File(deskPath)); + fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); + int state = fileChooser.showOpenDialog(parent); + if (state == 1) { + return null; + } + return fileChooser.getSelectedFile(); + } + + /** + * 根据文件类型过滤文件 + */ + public static File chooseFile(Component parent,String type) { + FileSystemView fsv = FileSystemView.getFileSystemView(); + String deskPath = fsv.getHomeDirectory().getPath(); + JFileChooser fileChooser = new JFileChooser(); + fileChooser.setCurrentDirectory(new File(deskPath)); + fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); + MyFileFilter mFilter = new MyFileFilter(type); + fileChooser.addChoosableFileFilter(mFilter); + fileChooser.setFileFilter(mFilter); + int state = fileChooser.showOpenDialog(parent); + if (state == 1) { + return null; + } + return fileChooser.getSelectedFile(); + } + + + public static void HiddenCell(int column,JTable table) { + TableColumn tc = table.getTableHeader().getColumnModel().getColumn(column); + tc.setMaxWidth(0); + tc.setPreferredWidth(0); + tc.setWidth(0); + tc.setMinWidth(0); + table.getTableHeader().getColumnModel().getColumn(column).setMaxWidth(0); + table.getTableHeader().getColumnModel().getColumn(column).setMinWidth(0); + } + + public static void post(Component var0,String value,String title) { + Dialog var16 = Utilities.getParentDialog(var0); + if (var16 != null) { + MessageBox.post(var16, value, title, 2); + } else { + MessageBox.post(Utilities.getParentFrame(var0), value, title, 2); + } + } + + // 获得lov值 + public static Map getLOVs(String lovName) { + Map map = new LinkedHashMap(); + map.put("", ""); + try { + TCComponentListOfValuesType lovType = (TCComponentListOfValuesType) session.getTypeComponent("ListOfValues"); + TCComponentListOfValues[] lov = lovType.find(lovName); + if (lov.length > 0) { + ListOfValuesInfo listOfValues = lov[0].getListOfValues(); + String[] realval = listOfValues.getStringListOfValues(); + for (int i = 0; i < realval.length; i++) { + String disval = listOfValues.getDisplayableValue(realval[i]); + map.put(disval, realval[i]); + } + } + } catch (TCException e) { + e.printStackTrace(); + } + return map; + } + + public static TCComponent getLatestReleaseRevison(TCComponent component) throws Exception{ + TCComponent[] revisions = component.getTCProperty("revision_list").getReferenceValueArray(); + for (int i = revisions.length-1; i >= 0; i--) { + TCComponent[] release_statuas = revisions[i].getReferenceListProperty("release_status_list"); + if (release_statuas!=null && release_statuas.length > 0) { + return revisions[i]; + } + } + return null; + } + + public static TCComponent getLastReleaseRevisonFormByStatus(TCComponent component) throws Exception{ + String[] cpxpzt_status = session.getPreferenceService().getStringValues("Cpxpzt"); + TCComponent[] revisions = component.getTCProperty("revision_list").getReferenceValueArray(); + for (int i = revisions.length-1; i >= 0; i--) { + TCComponent[] release_statuses = revisions[i].getReferenceListProperty("release_status_list"); + if (release_statuses!=null && release_statuses.length > 0) { + for(TCComponent release_status:release_statuses) { + for(String sxx_value:cpxpzt_status) { + if (release_status.getStringProperty("object_name").equals(sxx_value)) { + return revisions[i].getReferenceListProperty("IMAN_master_form_rev")[0]; + } + } + } + } + } + return null; + } + + public static boolean isDigit(String str) { + if (ConnorUtils.isEmpty(str)) { + return false; + } + char[] chars = str.toCharArray(); + int len = chars.length; + for (int i = 0; i < len; i++) { + char c = chars[i]; + if (!(c >= '0' && c <= '9')) { + return false; + } + } + return true; + } + + public static boolean isNumericzidai(String str) { + Pattern pattern = Pattern.compile("-?[0-9]+\\.?[0-9]*"); + Matcher isNum = pattern.matcher(str); + if (!isNum.matches()) { + return false; + } + return true; + } + + public static void getClassification(TCComponentItemRevision rev) { + try { + TCComponentICO[] icos = rev.getClassificationObjects(); + if(icos==null || icos.length==0) { + return; + } + for(int i=0;i void deepCopy(List src, List dest) { + try { + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + ObjectOutputStream oos = new ObjectOutputStream(bos); + oos.writeObject(src); + oos.flush(); + oos.close(); + bos.close(); + byte[] byteData = bos.toByteArray(); + ByteArrayInputStream bais = new ByteArrayInputStream(byteData); + List copy = (List) new ObjectInputStream(bais).readObject(); + bais.close(); + dest.clear(); + dest.addAll(copy); + } catch (Exception e) { + // 异常处理 + e.printStackTrace(); + } + } +} diff --git a/src/com/connor/mdbksplm/util/MyFileFilter.java b/src/com/connor/mdbksplm/util/MyFileFilter.java new file mode 100644 index 0000000..078c2b5 --- /dev/null +++ b/src/com/connor/mdbksplm/util/MyFileFilter.java @@ -0,0 +1,26 @@ +package com.connor.mdbksplm.util; + +import java.io.File; + +import javax.swing.filechooser.FileFilter; + +public class MyFileFilter extends FileFilter{ + + private String type=""; + + + public MyFileFilter(String type) { + this.type = type; + } + @Override + public boolean accept(File file) { + String name = file.getName(); + return file.isDirectory() || name.toLowerCase().endsWith("."+type); + } + + @Override + public String getDescription() { + return "*."+type; + } + +} diff --git a/src/com/connor/mdbksplm/util/ProgressBar.java b/src/com/connor/mdbksplm/util/ProgressBar.java new file mode 100644 index 0000000..29e6dc9 --- /dev/null +++ b/src/com/connor/mdbksplm/util/ProgressBar.java @@ -0,0 +1,177 @@ +/** + * @file ProgressBar.java + * + * @brief Create progress bar + * + * @author Yanghui + * + * @history + * ================================================================ + * Date Name Description of Change + * 25-July-2008 Yanghui this class is used to create + * progress bar. + */ +package com.connor.mdbksplm.util; + +import java.awt.Container; +import java.awt.Dimension; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; + +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JProgressBar; +import javax.swing.Timer; + +import com.teamcenter.rac.aif.AbstractAIFDialog; +import com.teamcenter.rac.util.PropertyLayout; +import com.teamcenter.rac.util.Registry; + +/** + * @class ProgressBar + * @brief Create progress bar + * @author Yanghui + */ +public class ProgressBar extends AbstractAIFDialog implements ActionListener { + /** + * @var ProgressBar.progressbar + * @brief JProgressBar + */ + private JProgressBar progressbar; + + /** + * @var ProgressBar.label + * @brief label used to tips + */ + private JLabel label; + + /** + * @var ProgressBar.timer + * @brief timer used to timing operation + */ + private Timer timer; + + /** + * @var ProgressBar.bool + * @brief bool used to flag thread return + */ + private boolean bool = false; + + /** + * @var Progressbar.registry + * @brief Registry + */ + private Registry registry; + + /** + * @fn public ProgressBar() + * @brief constructor + * @param[in] null + */ + private String showLable = null; + + public ProgressBar(String showlable) { + super(true); + showLable = showlable; + this.setAlwaysOnTop(true); + } + + /** + * @fn public void setBool(boolean bool) + * @brief set bool value + * @param[in] bool + * @param[out] null + */ + public void setBool(boolean bool) { + this.bool = bool; + } + + /** + * @fn private void initUI() + * @brief createDialog method + * @param[in] null + * @param[out] null + */ + public void initUI() { + Container container = getContentPane(); + JPanel mainPanel = new JPanel(new PropertyLayout()); + this.label = new JLabel(showLable, JLabel.CENTER); + this.progressbar = new JProgressBar(); + this.progressbar.setOrientation(JProgressBar.HORIZONTAL); + this.progressbar.setMinimum(0); + this.progressbar.setMaximum(100); + this.progressbar.setValue(0); + this.progressbar.setPreferredSize(new Dimension(200, 15)); + this.progressbar.setBorderPainted(true); + this.timer = new Timer(50, (ActionListener) this); + this.timer.setRepeats(false); + mainPanel.add("1.1.center", new JLabel(" ")); + mainPanel.add("2.1.center", label); + mainPanel.add("3.1.center", progressbar); + mainPanel.add("4.1.center", new JLabel(" ")); + container.add(mainPanel); + pack(); + setLocation(500, 200); + TaskThread thread = new TaskThread(this); + thread.start(); + addWindowListener(new WindowAdapter() { + public void windowClosing(WindowEvent e) { + bool = true; + } + }); + this.setVisible(true); + } + + /** + * @class TaskThread + * @brief Create progressbar + * + */ + class TaskThread extends Thread { + private ProgressBar bar; + + public TaskThread(ProgressBar bar) { + this.bar = bar; + } + + public void run() { + if (bool == false) { + // Set Status is running. + // session.setStatus(registry.getString("export Running")); + } + for (int i = 0; i < i + 1; i++) { + timer.start(); + int value = progressbar.getValue(); + if (value < 100) { + value = value + 5; + progressbar.setValue(value); + } else { + timer.stop(); + progressbar.setValue(0); + } + try { + sleep(100); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + if (bool == true) { + this.bar.setVisible(false); + this.bar.disposeDialog(); + this.bar.dispose(); + this.interrupt(); + return; + + } + + } + } + } + + public void actionPerformed(ActionEvent arg0) { + // TODO Auto-generated method stub + + } +} diff --git a/src/com/connor/mdbksplm/util/ProgressBarDemo.java b/src/com/connor/mdbksplm/util/ProgressBarDemo.java new file mode 100644 index 0000000..cef750d --- /dev/null +++ b/src/com/connor/mdbksplm/util/ProgressBarDemo.java @@ -0,0 +1,52 @@ +package com.connor.mdbksplm.util; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JProgressBar; +import java.awt.BorderLayout; +import java.awt.Dimension; +public class ProgressBarDemo { + private JFrame frame; + private JPanel panel; + private JProgressBar progressBar; + private JLabel label; + public ProgressBarDemo() { + frame = new JFrame("加载中"); + panel = new JPanel(new BorderLayout()); + progressBar = new JProgressBar(); + progressBar.setMinimum(0); + progressBar.setMaximum(100); + label = new JLabel("正在加载,请稍等..."); + panel.add(progressBar, BorderLayout.CENTER); + panel.add(label, BorderLayout.SOUTH); + frame.add(panel); + frame.setPreferredSize(new Dimension(400, 100)); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + frame.pack(); + frame.setLocationRelativeTo(null); + } + public void showProgressBar() { + progressBar.setIndeterminate(true); + frame.setVisible(true); + } + public void hideProgressBar() { + progressBar.setIndeterminate(false); + frame.setVisible(false); + } + public void updateProgress(int value) { + progressBar.setValue(value); + } +// public static void main(String[] args) { +// ProgressBarDemo demo = new ProgressBarDemo(); +// demo.showProgressBar(); +// for (int i = 0; i <= 100; i++) { +// try { +// Thread.sleep(50); +// } catch (InterruptedException e) { +// e.printStackTrace(); +// } +//// demo.updateProgress(i); +// } +// demo.hideProgressBar(); +// } +} \ No newline at end of file diff --git a/src/com/connor/mdbksplm/util/ProgressBarThread.java b/src/com/connor/mdbksplm/util/ProgressBarThread.java new file mode 100644 index 0000000..e493098 --- /dev/null +++ b/src/com/connor/mdbksplm/util/ProgressBarThread.java @@ -0,0 +1,23 @@ +package com.connor.mdbksplm.util; + +public class ProgressBarThread extends Thread { + + private ProgressBar bar; + + private String title; + + public ProgressBarThread(String title, String showLable) { + this.title = title; + bar = new ProgressBar(showLable); + } + + public void run() { + bar.setTitle(title); + bar.initUI(); + } + + public void setBool(boolean bool) { + bar.setBool(true); + bar.setAlwaysOnTop(false); + } +} diff --git a/src/com/connor/mdbksplm/util/S8ProgressBar.java b/src/com/connor/mdbksplm/util/S8ProgressBar.java new file mode 100644 index 0000000..ea6a996 --- /dev/null +++ b/src/com/connor/mdbksplm/util/S8ProgressBar.java @@ -0,0 +1,105 @@ +package com.connor.mdbksplm.util; + +import com.teamcenter.rac.aif.AbstractAIFDialog; +import com.teamcenter.rac.util.PropertyLayout; +import java.awt.Container; +import java.awt.Dimension; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JProgressBar; +import javax.swing.Timer; + +public class S8ProgressBar extends AbstractAIFDialog + implements ActionListener +{ + private static final long serialVersionUID = 1L; + private JProgressBar progressbar; + private JLabel label; + private Timer timer; + private boolean bool = false; + private String showLable = null; + + public S8ProgressBar(String showlable) { + super(true); + this.showLable = showlable; + } + + public void setBool(boolean bool) + { + this.bool = bool; + } + + public void initUI() + { + Container container = getContentPane(); + JPanel mainPanel = new JPanel(new PropertyLayout()); + this.label = new JLabel(this.showLable, 0); + this.progressbar = new JProgressBar(); + this.progressbar.setOrientation(0); + this.progressbar.setMinimum(0); + this.progressbar.setMaximum(100); + this.progressbar.setValue(0); + this.progressbar.setPreferredSize(new Dimension(200, 15)); + this.progressbar.setBorderPainted(true); + this.timer = new Timer(50, this); + this.timer.setRepeats(false); + mainPanel.add("1.1.center", new JLabel(" ")); + mainPanel.add("2.1.center", this.label); + mainPanel.add("3.1.center", this.progressbar); + mainPanel.add("4.1.center", new JLabel(" ")); + container.add(mainPanel); + pack(); + //setLocation(500, 200); + centerToScreen(); + TaskThread thread = new TaskThread(this); + thread.start(); + addWindowListener(new WindowAdapter() { + public void windowClosing(WindowEvent e) { + S8ProgressBar.this.bool = true; + } + }); + setVisible(true); + } + + public void actionPerformed(ActionEvent arg0) + { + } + + class TaskThread extends Thread + { + private S8ProgressBar bar; + + public TaskThread(S8ProgressBar bar) { + this.bar = bar; + } + + public void run() + { + for (int i = 0; i < i + 1; i++) { + S8ProgressBar.this.timer.start(); + int value = S8ProgressBar.this.progressbar.getValue(); + if (value < 100) { + value += 5; + S8ProgressBar.this.progressbar.setValue(value); + } else { + S8ProgressBar.this.timer.stop(); + S8ProgressBar.this.progressbar.setValue(0); + } + try { + sleep(100L); + } catch (InterruptedException e) { + e.printStackTrace(); + } + if (S8ProgressBar.this.bool) { + this.bar.setVisible(false); + this.bar.dispose(); + return; + } + } + } + } +} \ No newline at end of file diff --git a/src/com/connor/mdbksplm/util/S8ProgressBarThread.java b/src/com/connor/mdbksplm/util/S8ProgressBarThread.java new file mode 100644 index 0000000..57684a9 --- /dev/null +++ b/src/com/connor/mdbksplm/util/S8ProgressBarThread.java @@ -0,0 +1,27 @@ +package com.connor.mdbksplm.util; + +public class S8ProgressBarThread extends Thread +{ + private S8ProgressBar bar; + private String title; + + public S8ProgressBarThread(String title, String message) + { + this.title = title; + this.bar = new S8ProgressBar(message); + } + + public void run() { + this.bar.setTitle(this.title); + this.bar.initUI(); + } + + public void stopBar() { + this.bar.setBool(true); + } + + public void setBarMsg(String str) + { + this.bar.setTitle(str); + } +} \ No newline at end of file diff --git a/src/com/connor/mdbksplm/util/SoaServerUtil.java b/src/com/connor/mdbksplm/util/SoaServerUtil.java new file mode 100644 index 0000000..b8e2618 --- /dev/null +++ b/src/com/connor/mdbksplm/util/SoaServerUtil.java @@ -0,0 +1,177 @@ +//package com.connor.mdbksplm.util; +//import java.util.ArrayList; +//import java.util.List; +// +//import org.apache.axiom.om.OMAbstractFactory; +//import org.apache.axiom.om.OMElement; +//import org.apache.axiom.om.OMFactory; +//import org.apache.axiom.om.OMNamespace; +//import org.apache.axis2.AxisFault; +//import org.apache.axis2.addressing.EndpointReference; +//import org.apache.axis2.client.Options; +//import org.apache.axis2.client.ServiceClient; +// +//import com.teamcenter.rac.aifrcp.AIFUtility; +//import com.teamcenter.rac.kernel.TCAccessControlService; +//import com.teamcenter.rac.kernel.TCComponent; +//import com.teamcenter.rac.kernel.TCComponentItem; +//import com.teamcenter.rac.kernel.TCComponentItemRevision; +//import com.teamcenter.rac.kernel.TCComponentUser; +//import com.teamcenter.rac.kernel.TCComponentUserType; +//import com.teamcenter.rac.kernel.TCException; +//import com.teamcenter.rac.kernel.TCPreferenceService; +//import com.teamcenter.rac.kernel.TCSession; +//import com.teamcenter.rac.kernel.TCUserService; +// +//public class SoaServerUtil { +// +// public static TCPreferenceService preferenceService; +// public static String priverUserID; +// public static String webServiceURL; +// +// static{ +// try { +// +// if(preferenceService == null){ +// preferenceService = ((TCSession) AIFUtility.getCurrentApplication().getSession()).getPreferenceService(); +// } +// +// if(priverUserID == null){ +// priverUserID = preferenceService.getString(TCPreferenceService.TC_preference_site, "Autocode_PriverUser_ID"); +// } +// +// if(webServiceURL == null){ +// webServiceURL = preferenceService.getString(TCPreferenceService.TC_preference_site, "Autocode_SendClassServer_URL"); +// } +// +// }catch(Exception e){ +// e.printStackTrace(); +// } +// } +// +// public static void sendToClass(String wsoPUID, String classID, String json) { +// try { +// ServiceClient sc = new ServiceClient(); +// Options opts = new Options(); +// String url = webServiceURL;//"http://10.201.5.203:19090/ErpWebService.asmx?WSDL"; +// EndpointReference end = new EndpointReference(url); +// opts.setTo(end); +// opts.setAction("SendToClass"); +// sc.setOptions(opts); +// OMFactory fac = OMAbstractFactory.getOMFactory(); +// OMNamespace omNs = fac.createOMNamespace("http://tempuri.org/", ""); +// OMElement method = fac.createOMElement("SendToClass", omNs); +// OMElement value = fac.createOMElement("wsoPuiid", omNs); +// value.setText(wsoPUID); +// OMElement value1 = fac.createOMElement("classID", omNs); +// value1.setText(classID); +// OMElement value2 = fac.createOMElement("JsonContainer", omNs); +// // "[{\"value\":\"1\",\"propertyID\":-500003},{\"value\":\"1\",\"propertyID\":-500011}]" +// value2.setText(json); +// +// method.addChild(value); +// method.addChild(value1); +// method.addChild(value2); +// +// OMElement res = sc.sendReceive(method); +// res.getFirstElement().getText(); +// System.out.println(res.getFirstElement().getText()); +// } catch (AxisFault e) { +// e.printStackTrace(); +// } +// +// } +// +// public static void grantReadPrivilege(TCSession tcSession, TCComponent tccomponent +// ) { +// try { +// TCAccessControlService accessControlService = tcSession +// .getTCAccessControlService(); +// TCComponentUserType type = (TCComponentUserType) tcSession.getTypeComponent("User"); +// TCComponentUser user = type.find(priverUserID);//2135 +// +// if(user ==null){ +// return; +// } +// if(tcSession.getUser().equals(user)){ +// return; +// } +// +// String[] as2 = new String[] { "READ" }; +// +// if (tccomponent instanceof TCComponentItemRevision) { +// TCComponentItem tempItem = ((TCComponentItemRevision) tccomponent) +// .getItem(); +// openByPass(tcSession); +// accessControlService.grantPrivilege(tempItem, user, as2); +// closeByPass(tcSession); +// +// +// openByPass(tcSession); +// accessControlService.grantPrivilege(tccomponent, user, as2); +// closeByPass(tcSession); +// } else { +// openByPass(tcSession); +// accessControlService.grantPrivilege(tccomponent, user, as2); +// closeByPass(tcSession); +// } +// } catch (TCException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// } +// +// public static void grantWritePrivilege(TCSession tcSession, TCComponent tccomponent +// ) { +// try { +// TCAccessControlService accessControlService = tcSession +// .getTCAccessControlService(); +// TCComponentUserType type = (TCComponentUserType) tcSession.getTypeComponent("User"); +// +// TCComponentUser user = type.find(priverUserID);//2135 +// if(user ==null){ +// return; +// } +// if(tcSession.getUser().equals(user)){ +// return; +// } +// +// String[] as2 = new String[] { "READ", "WRITE" ,"DELETE"}; +// +// if (tccomponent instanceof TCComponentItemRevision) { +// TCComponentItem tempItem = ((TCComponentItemRevision) tccomponent) +// .getItem(); +// openByPass(tcSession); +// accessControlService.grantPrivilege(tempItem, user, as2); +// closeByPass(tcSession); +// +// +// openByPass(tcSession); +// accessControlService.grantPrivilege(tccomponent, user, as2); +// closeByPass(tcSession); +// } else { +// openByPass(tcSession); +// accessControlService.grantPrivilege(tccomponent, user, as2); +// closeByPass(tcSession); +// } +// } catch (TCException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// } +// +// public static void openByPass(TCSession session) throws TCException { +// TCUserService userservice = session.getUserService(); +// Object[] obj = new Object[1]; +// obj[0] = "origin"; +// userservice.call("Connor_set_bypass", obj); +// } +// +// public static void closeByPass(TCSession session) throws TCException { +// TCUserService userservice = session.getUserService(); +// Object[] obj = new Object[1]; +// obj[0] = "origin"; +// userservice.call("Connor_close_bypass", obj); +// } +// +//} diff --git a/src/com/connor/mdbksplm/util/WaitingDialog.java b/src/com/connor/mdbksplm/util/WaitingDialog.java new file mode 100644 index 0000000..688076d --- /dev/null +++ b/src/com/connor/mdbksplm/util/WaitingDialog.java @@ -0,0 +1,70 @@ +package com.connor.mdbksplm.util; + +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.Frame; +import java.awt.Label; + +import javax.swing.JPanel; +import javax.swing.JProgressBar; +import javax.swing.SwingConstants; + +public class WaitingDialog extends com.teamcenter.rac.aif.AbstractAIFDialog +{ + public JPanel panel ; + JProgressBar progressBar =null; + public WaitingDialog(Frame arg0, String title, String message) + { + super(arg0, title); + this.setModal(false); + + panel = new JPanel(new BorderLayout()); + + /*JLabel label = new JLabel(message); + System.out.println("message:"+message); + System.out.println("label:"+label); + panel.add(label);*/ + + progressBar = new JProgressBar(SwingConstants.HORIZONTAL); + progressBar.setVisible(true); + progressBar.setIndeterminate(true); + + panel.add(BorderLayout.CENTER,new Label(message)); + panel.add(BorderLayout.SOUTH,progressBar); + + + panel.setPreferredSize(new Dimension(350,60)); + + this.getContentPane().add(panel); + + centerToScreen(); + + pack(); + + } + + public void SetDialogMessage(String sMessage) + { + try + { + Component[] components = panel.getComponents(); + for(int i = 0 ; i < components.length ; i++) + { + if(components[i] instanceof Label) + { + Label label = (Label)components[i]; + label.setText(sMessage); + break; + } + } + } + catch(Exception e) + { + } + finally + { + } + return; + } +} diff --git a/src/com/connor/mdbksplm/zjdoccreate/JCheckBoxTree.java b/src/com/connor/mdbksplm/zjdoccreate/JCheckBoxTree.java new file mode 100644 index 0000000..48b4f43 --- /dev/null +++ b/src/com/connor/mdbksplm/zjdoccreate/JCheckBoxTree.java @@ -0,0 +1,282 @@ +package com.connor.mdbksplm.zjdoccreate; + +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.Graphics; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.util.Enumeration; + +import javax.swing.Icon; +import javax.swing.JCheckBox; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JTree; +import javax.swing.UIManager; +import javax.swing.plaf.ColorUIResource; +import javax.swing.tree.DefaultMutableTreeNode; +import javax.swing.tree.DefaultTreeCellRenderer; +import javax.swing.tree.DefaultTreeModel; +import javax.swing.tree.TreeCellRenderer; +import javax.swing.tree.TreePath; +import javax.swing.tree.TreeSelectionModel; + +public class JCheckBoxTree extends JTree { + + private static final long serialVersionUID = 1L; + public JCheckBoxTree(CheckNode checkNode) { + super(checkNode); + this.setCellRenderer(new CheckRenderer()); + this.setShowsRootHandles(true); + this.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION ); + this.putClientProperty("JTree.lineStyle", "Angled"); + this.addLister(this); + } + /*** + * 添加点击事件使其选中父节点时 + * 子节点也选中 + * @param tree + */ + private void addLister(final JTree tree) { + this.addMouseListener(new MouseAdapter(){ + + @Override + public void mouseClicked(MouseEvent e) { + super.mouseClicked(e); + int row = tree.getRowForLocation(e.getX(),e.getY()); + TreePath path = tree.getPathForRow(row); + if (path != null) { + CheckNode node = (CheckNode) path.getLastPathComponent(); + node.setSelected(!node.isSelected); + if(node.getSelectionMode()== CheckNode.DIG_IN_SELECTION) + { + if(node.isSelected) + { + tree.expandPath(path); + }else{ + if(!node.isRoot()) + { + tree.collapsePath(path); + } + } + } + //响应事件更新树 + ((DefaultTreeModel) tree.getModel()).nodeChanged(node); + tree.revalidate(); + tree.repaint(); + } + } + + }); + } + + private class CheckRenderer extends JPanel implements TreeCellRenderer { + private static final long serialVersionUID = 1L; + + protected JCheckBox check; + + protected TreeLabel label; + + public CheckRenderer() { + setLayout(null); + add(check = new JCheckBox()); + add(label = new TreeLabel()); + check.setBackground(UIManager.getColor("Tree.textBackground")); + label.setForeground(UIManager.getColor("Tree.textForeground")); + } + + /** + * 改变的节点的为JLabel和JChekBox的组合 + */ + public Component getTreeCellRendererComponent(JTree tree, Object value, + boolean isSelected, boolean expanded, boolean leaf, int row, + boolean hasFocus) { + String stringValue = tree.convertValueToText(value, isSelected,expanded, leaf, row, hasFocus); + setEnabled(tree.isEnabled()); + check.setSelected(((CheckNode) value).isSelected()); + label.setFont(tree.getFont()); + label.setText(stringValue); + label.setSelected(isSelected); + label.setFocus(hasFocus); + if (leaf) { + //label.setIcon(UIManager.getIcon("Tree.leafIcon")); + label.setIcon(null);//把leaf前的图片去掉 + } else if (expanded) { + label.setIcon(UIManager.getIcon("Tree.openIcon")); + } else { + label.setIcon(UIManager.getIcon("Tree.closedIcon")); + } + return this; + } + + public Dimension getPreferredSize() { + Dimension d_check = check.getPreferredSize(); + Dimension d_label = label.getPreferredSize(); + return new Dimension(d_check.width + d_label.width, + (d_check.height < d_label.height ? d_label.height + : d_check.height)); + } + + public void doLayout() { + Dimension d_check = check.getPreferredSize(); + Dimension d_label = label.getPreferredSize(); + int y_check = 0; + int y_label = 0; + if (d_check.height < d_label.height) { + y_check = (d_label.height - d_check.height) / 2; + } else { + y_label = (d_check.height - d_label.height) / 2; + } + check.setLocation(0, y_check); + check.setBounds(0, y_check, d_check.width, d_check.height); + label.setLocation(d_check.width, y_label); + label.setBounds(d_check.width, y_label, d_label.width, + d_label.height); + } + + public void setBackground(Color color) { + if (color instanceof ColorUIResource) + color = null; + super.setBackground(color); + } + + private class TreeLabel extends JLabel { + private static final long serialVersionUID = 1L; + + private boolean isSelected; + + private boolean hasFocus; + + public TreeLabel() { + } + + public void setBackground(Color color) { + if (color instanceof ColorUIResource) + color = null; + super.setBackground(color); + } + + public void paint(Graphics g) { + String str; + if ((str = getText()) != null) { + if (0 < str.length()) { + if (isSelected) { + g.setColor(UIManager + .getColor("Tree.selectionBackground")); + } else { + g.setColor(UIManager + .getColor("Tree.textBackground")); + } + Dimension d = getPreferredSize(); + int imageOffset = 0; + Icon currentI = getIcon(); + if (currentI != null) { + imageOffset = currentI.getIconWidth() + + Math.max(0, getIconTextGap() - 1); + } + g.fillRect(imageOffset, 0, d.width - 1 - imageOffset, + d.height); + if (hasFocus) { + g.setColor(UIManager + .getColor("Tree.selectionBorderColor")); + g.drawRect(imageOffset, 0, d.width - 1 + - imageOffset, d.height - 1); + } + } + } + super.paint(g); + } + + public Dimension getPreferredSize() { + Dimension retDimension = super.getPreferredSize(); + if (retDimension != null) { + retDimension = new Dimension(retDimension.width + 3, + retDimension.height); + } + return retDimension; + } + + public void setSelected(boolean isSelected) { + this.isSelected = isSelected; + } + + public void setFocus(boolean hasFocus) { + this.hasFocus = hasFocus; + } + } + } + + public static class CheckNode extends DefaultMutableTreeNode { + + private static final long serialVersionUID = 1L; + + public final static int SINGLE_SELECTION = 0; + + public final static int DIG_IN_SELECTION = 4; + + protected int selectionMode; + + protected boolean isSelected; + + public CheckNode() { + this(null); + } + + public CheckNode(Object userObject) { + this(userObject, true, false); + } + + public CheckNode(String[] userObject) { + this(userObject, true, false); + } + + public CheckNode(Object userObject, boolean allowsChildren, + boolean isSelected) { + super(userObject, allowsChildren); + this.isSelected = isSelected; + setSelectionMode(DIG_IN_SELECTION); + } + + public void setSelectionMode(int mode) { + selectionMode = mode; + } + + public int getSelectionMode() { + return selectionMode; + } + +// public String toString() { +// if(userObject instanceof Object[]) { +// Object[] array = (Object[]) userObject; +// return array[0].toString(); +// } +// System.out.println(super.toString()); +// return super.toString(); +// +// } + + /** + * 选中父节点时也级联选中子节点 + * @param isSelected + */ + @SuppressWarnings("unchecked") + public void setSelected(boolean isSelected) { + this.isSelected = isSelected; + if ((selectionMode == DIG_IN_SELECTION) && (children != null)) { + Enumeration e = children.elements(); + while (e.hasMoreElements()) { + CheckNode node = (CheckNode) e.nextElement(); + node.setSelected(isSelected); + } + } + } + + public boolean isSelected() { + return isSelected; + } + } +} + diff --git a/src/com/connor/mdbksplm/zjdoccreate/TreeBean.java b/src/com/connor/mdbksplm/zjdoccreate/TreeBean.java new file mode 100644 index 0000000..93002a2 --- /dev/null +++ b/src/com/connor/mdbksplm/zjdoccreate/TreeBean.java @@ -0,0 +1,35 @@ +package com.connor.mdbksplm.zjdoccreate; + +public class TreeBean { + private String name; + private String objecttype; + private String ismust; + + public void setName(String name) { + this.name = name; + } + + public void setObjecttype(String objecttype) { + this.objecttype = objecttype; + } + + public void setIsmust(String ismust) { + this.ismust = ismust; + } + + public String getName() { + return name; + } + + public String getObjecttype() { + return objecttype; + } + + public String getIsmust() { + return ismust; + } + + public String toString() { + return name; + } +} diff --git a/src/com/connor/mdbksplm/zjdoccreate/zjCreateDialog.java b/src/com/connor/mdbksplm/zjdoccreate/zjCreateDialog.java new file mode 100644 index 0000000..0ca8bbd --- /dev/null +++ b/src/com/connor/mdbksplm/zjdoccreate/zjCreateDialog.java @@ -0,0 +1,494 @@ +package com.connor.mdbksplm.zjdoccreate; + +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.awt.Font; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.io.File; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import javax.swing.JButton; +import javax.swing.JComboBox; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTextField; +import javax.swing.UIManager; +import javax.swing.tree.DefaultMutableTreeNode; +import javax.swing.tree.DefaultTreeModel; +import javax.swing.tree.TreeNode; +import javax.swing.tree.TreePath; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.NodeList; + +import com.connor.mdbksplm.creatematter.MyXmlUtil; +import com.connor.mdbksplm.zjdoccreate.JCheckBoxTree.CheckNode; +import com.teamcenter.rac.aif.AbstractAIFDialog; +import com.teamcenter.rac.common.create.BOCreateDefinitionFactory; +import com.teamcenter.rac.common.create.CreateInstanceInput; +import com.teamcenter.rac.common.create.IBOCreateDefinition; +import com.teamcenter.rac.common.create.SOAGenericCreateHelper; +import com.teamcenter.rac.kernel.TCComponent; +import com.teamcenter.rac.kernel.TCComponentDataset; +import com.teamcenter.rac.kernel.TCComponentFolder; +import com.teamcenter.rac.kernel.TCComponentFolderType; +import com.teamcenter.rac.kernel.TCComponentItem; +import com.teamcenter.rac.kernel.TCComponentItemType; +import com.teamcenter.rac.kernel.TCComponentTcFile; +import com.teamcenter.rac.kernel.TCException; +import com.teamcenter.rac.kernel.TCPreferenceService; +import com.teamcenter.rac.kernel.TCSession; +import com.teamcenter.rac.util.MessageBox; +import com.teamcenter.rac.util.PropertyLayout; + +public class zjCreateDialog extends AbstractAIFDialog{ + + private JLabel oneType; + private JComboBox oneTypeBox; + private JLabel twoType; + private JTextField twoTypeField; + private JButton okButton; + private JButton celButton; + private JCheckBoxTree boxTree; + + private TCSession session; + private TCComponent comp; + private String groupName; + + private String folderType; + HashMap>> classMap = new HashMap<>(); + + public zjCreateDialog(TCComponent comp,TCSession session, String groupName) { + super(false); + this.comp=comp; + this.session=session; + this.groupName = groupName; + initUI(); + } + + public void initUI() { + this.setSize(new Dimension(600, 800)); + this.setTitle("批量创建文档"); + + FindData(); + + JPanel panel = new JPanel(new FlowLayout()); + oneType = new JLabel("项目类型:"); + oneType.setPreferredSize(new Dimension(70, 25)); + oneTypeBox = new JComboBox(); + oneTypeBox.setPreferredSize(new Dimension(150, 25)); + classMap.forEach((k,v) -> { + oneTypeBox.addItem(k); + }); + + twoType = new JLabel("名称:"); + twoType.setPreferredSize(new Dimension(70, 25)); + twoTypeField = new JTextField(); + twoTypeField.setPreferredSize(new Dimension(150, 25)); + panel.add(oneType); + panel.add(oneTypeBox); + panel.add(twoType); + panel.add(twoTypeField); + + + try { + UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); + } catch (Exception e) { + e.printStackTrace(); + } + + HashMap rootMap = new HashMap<>(); + classMap.forEach((k,v) -> { + CheckNode childtop = new CheckNode(k); // 根节点 + System.out.println("根节点变为:" + k); + rootMap.put(k,childtop); + v.forEach((k1,v1) -> { + CheckNode child1 = new CheckNode(k1); // 一级目录 + System.out.println("一级目录添加:" + k1); + if(v1 != null && v1.size() > 0) { + for(int i=0; i> beanMap = new HashMap<>(); + for(int j=0; j beanList = new ArrayList<>(); + Element ele2 = (Element) nodelist2.item(j); + String ele2Nmae = ele2.getAttribute("treename"); + NodeList nodelist3 = ele2.getElementsByTagName("deliverable"); + if(nodelist3 == null || nodelist3.getLength() == 0) {System.out.println("未读取到deliverable,后续可能会出现bug");} + + for(int k=0; k 0) { + TCComponent tccomponent = (TCComponent) list1.get(0); + folder = (TCComponentFolder) tccomponent; + folder.setProperty("object_name", name); + } + } catch (TCException e) { + e.printStackTrace(); + } + return folder; + } +} + + diff --git a/src/com/connor/mdbksplm/zjdoccreate/zjCreateHandler.java b/src/com/connor/mdbksplm/zjdoccreate/zjCreateHandler.java new file mode 100644 index 0000000..38976f1 --- /dev/null +++ b/src/com/connor/mdbksplm/zjdoccreate/zjCreateHandler.java @@ -0,0 +1,63 @@ +package com.connor.mdbksplm.zjdoccreate; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; + +import com.teamcenter.rac.aif.AbstractAIFApplication; +import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent; +import com.teamcenter.rac.aifrcp.AIFUtility; +import com.teamcenter.rac.kernel.TCComponent; +import com.teamcenter.rac.kernel.TCComponentFolderType; +import com.teamcenter.rac.kernel.TCComponentItemType; +import com.teamcenter.rac.kernel.TCException; +import com.teamcenter.rac.kernel.TCPreferenceService; +import com.teamcenter.rac.kernel.TCSession; +import com.teamcenter.rac.util.MessageBox; + +public class zjCreateHandler extends AbstractHandler { + + @Override + public Object execute(ExecutionEvent arg0) throws ExecutionException { + // TODO Auto-generated method stub + AbstractAIFApplication app = AIFUtility.getCurrentApplication(); + TCSession session = (TCSession) app.getSession(); + InterfaceAIFComponent aifcomps= app.getTargetComponent(); + TCComponent component = (TCComponent) aifcomps; + TCPreferenceService preferenceService = session.getPreferenceService(); + String[] itemType = preferenceService.getStringValues("TRIZ_DocumentLimit"); + String s = ""; + for(int i =0;i unKnownUsers = new Vector(); + for (int i = 0; i < objects.length; i++) + { + if(!(objects[i] instanceof WorkspaceObject )) + continue; + + WorkspaceObject wo = (WorkspaceObject)objects[i]; + + User owner = null; + try + { + owner = (User) wo.get_owning_user(); + owner.get_user_name(); + } + catch (NotLoadedException e) + { + if(owner != null) + unKnownUsers.add(owner); + } + } + User[] users = (User[])unKnownUsers.toArray(new User[unKnownUsers.size()]); + String[] attributes = { "user_name" }; + + + // ***************************** + // Execute the service operation + // ***************************** + dmService.getProperties(users, attributes); + + + } + + +} diff --git a/src/com/teamcenter/rac/stylesheet/DesignAssignmentDialog.java b/src/com/teamcenter/rac/stylesheet/DesignAssignmentDialog.java new file mode 100644 index 0000000..86fa3d2 --- /dev/null +++ b/src/com/teamcenter/rac/stylesheet/DesignAssignmentDialog.java @@ -0,0 +1,579 @@ +package com.teamcenter.rac.stylesheet; + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.awt.Font; +import java.awt.Image; +import java.awt.image.BufferedImage; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Vector; + +import javax.imageio.ImageIO; +import javax.swing.BorderFactory; +import javax.swing.ImageIcon; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.JTextArea; +import javax.swing.JTextField; +import javax.swing.border.Border; + +import org.jdesktop.swingx.JXDatePicker; + +import com.connor.mdbksplm.treamlist.FormCheckUtil; +import com.teamcenter.rac.aif.AbstractAIFUIApplication; +import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent; +import com.teamcenter.rac.kernel.TCComponent; +import com.teamcenter.rac.kernel.TCComponentForm; +import com.teamcenter.rac.kernel.TCComponentItem; +import com.teamcenter.rac.kernel.TCComponentItemRevision; +import com.teamcenter.rac.kernel.TCException; +import com.teamcenter.rac.kernel.TCSession; +import com.teamcenter.rac.kernel.TCUserService; +import com.teamcenter.rac.util.PropertyLayout; + +public class DesignAssignmentDialog extends AbstractRendering{ + + protected TCSession session; + protected TCComponentForm formMain; + + private HashMap allComponents = new HashMap(); + protected AbstractAIFUIApplication app; + protected InterfaceAIFComponent targetComponent; +// protected ProgressBarThread wait; + protected TCComponentItem planItem; + protected TCComponentItemRevision itemRev; +// protected List list2 = new ArrayList<>(); + protected List endR = new ArrayList(); + protected String[] endStrings; + + protected TCUserService userService; + protected List releaseStatusList = new ArrayList<>(); + protected JScrollPane scrollPane; + + // 标题部分 + protected JLabel imageLabel; + protected JLabel title; + + protected JLabel cpbh; + protected JLabel cpmc; + protected JLabel gkbh; + protected JLabel qzrq1; + protected JLabel qzrq2; + + protected JTextField cpbhText; + protected JTextField cpmcText; + protected JTextField gkbhText; + protected JTextField qzrq1Text; + protected JTextField qzrq2Text; + + public JXDatePicker picker1; + public JXDatePicker picker2; + + protected JTextArea oneText; + protected JTextArea OneText = new JTextArea(3, 62); + + protected JTextArea twoText; + protected JTextArea TwoText = new JTextArea(3, 62); + + protected JTextArea threeText; + + protected JLabel ksyjtjsj; + protected JLabel otssj; + protected JLabel ppapsctjsj; + protected JLabel ppappzsj; + protected JLabel sopscsj; + + protected JXDatePicker ksyjtjsjDate; + protected JXDatePicker otssjDate; + protected JXDatePicker ppapsctjsjDate; + protected JXDatePicker ppappzsjDate; + protected JXDatePicker sopscsjDate; + + protected JTextArea fourText; + + protected JTextArea ribanText; + protected JTextArea gskzText; + protected JTextArea chyqText; + protected JTextArea gsnlText; + + protected JTextArea RibanText; + protected JTextArea GskzText; + protected JTextArea ChyqText; + protected JTextArea GsnlText; + + protected JTextArea fiveText; + + protected JTextArea fwyqText; + protected JTextArea cbyqText; + protected JTextArea bzText; + + protected JTextArea FwyqText; + protected JTextArea CbyqText; + protected JTextArea BzText; + + protected JTextArea sixText; + + protected JPanel p1 = new JPanel(); + protected JPanel p2 = new JPanel(); + protected JPanel p3 = new JPanel(); + protected JPanel p4 = new JPanel(); + protected JPanel p5 = new JPanel(); + protected JPanel p6 = new JPanel(); + protected JPanel p7 = new JPanel(); + protected JPanel p8 = new JPanel(); + protected JPanel p9 = new JPanel(); + protected JPanel p10 = new JPanel(); + protected JPanel p11 = new JPanel(); + protected JPanel p12 = new JPanel(); + protected JPanel p13 = new JPanel(); + protected JPanel p14 = new JPanel(); + protected JPanel p15 = new JPanel(); + protected JPanel p16 = new JPanel(); + protected JPanel p17 = new JPanel(); + protected JPanel p18 = new JPanel(); + protected JPanel p19 = new JPanel(); + protected JPanel p20 = new JPanel(); + protected JPanel p21 = new JPanel(); + protected JPanel p22 = new JPanel(); + + protected JPanel pp1 = new JPanel(); + protected JPanel pp2 = new JPanel(); + protected JPanel pp3 = new JPanel(); + protected JPanel pp4 = new JPanel(); + protected JPanel pp5 = new JPanel(); + protected JPanel pp6 = new JPanel(); + + Vector btShu; + + // flag为true,对象不在流程下,为false,在流程下 + boolean flag = true; + + public DesignAssignmentDialog(TCComponent arg0) throws Exception { + super(); + this.formMain = (TCComponentForm) arg0; + this.session = formMain.getSession(); + this.itemRev = (TCComponentItemRevision) arg0.getReferenceProperty("item_revision"); + containerLayout(); + } + + // 1创建界面 + public void containerLayout() { + System.out.println("开始渲染表单"); + // 运行结束后,fUtil.vtModifiableAttr存储可修改属性;vtReqAttr存储必填属性 + FormCheckUtil fUtil = new FormCheckUtil(formMain, null); + Vector xgShu = fUtil.vtModifiableAttr; +// xgShu.add("mt8_notes"); + btShu = fUtil.vtReqAttr; + try { + TCComponent[] c_process_stages = itemRev.getRelatedComponents("process_stage_list"); + if(c_process_stages != null && c_process_stages.length > 0) { + flag = false; + } + // 第一列 p1 + BufferedImage image = ImageIO.read(TreamListDialog.class.getClassLoader().getResourceAsStream("com/teamcenter/rac/stylesheet/md.png")); + Image scaledImage = image.getScaledInstance(200, 50, Image.SCALE_SMOOTH); + imageLabel = new JLabel(); + imageLabel.setIcon(new ImageIcon(scaledImage)); + imageLabel.setPreferredSize(new Dimension(200, 50)); + title = new JLabel(" 设计任务书"); + title.setFont(new Font("宋体", 1, 20)); + title.setPreferredSize(new Dimension(500, 50)); + p1.setLayout(new FlowLayout()); + p1.add(imageLabel); + p1.add(title); + + cpbh = new JLabel("产品编号:"); + cpbh.setPreferredSize(new Dimension(180, 25)); + cpbhText = new JTextField(); + cpbhText.setPreferredSize(new Dimension(200, 25)); + cpbhText.setText(formMain.getStringProperty("mt8_pronum")); + if(!flag && !xgShu.contains("mt8_pronum")) { + cpbhText.setEnabled(false); + } + + cpmc = new JLabel(" 产品名称:"); + cpmc.setPreferredSize(new Dimension(180, 25)); + cpmcText = new JTextField(); + cpmcText.setPreferredSize(new Dimension(200, 25)); + cpmcText.setText(formMain.getStringProperty("mt8_cusnum")); + if(!flag && !xgShu.contains("mt8_cusnum")) { + cpmcText.setEnabled(false); + } + + p2.setLayout(new FlowLayout()); + p2.add(cpbh); + p2.add(cpbhText); + p2.add(cpmc); + p2.add(cpmcText); + + gkbh = new JLabel("顾客编号:"); + gkbh.setPreferredSize(new Dimension(180, 25)); + gkbhText = new JTextField(); + gkbhText.setPreferredSize(new Dimension(200, 25)); + gkbhText.setText(formMain.getStringProperty("mt8_prodname")); + if(!flag && !xgShu.contains("mt8_prodname")) { + gkbhText.setEnabled(false); + } + + p3.setLayout(new FlowLayout()); + p3.add(gkbh); + p3.add(gkbhText); + +// JLabel nu = new JLabel(""); +// nu.setPreferredSize(new Dimension(70, 25)); + + qzrq1 = new JLabel("开始日期:"); + qzrq1.setPreferredSize(new Dimension(180, 25)); + picker1 = new JXDatePicker(); + picker1.setPreferredSize(new Dimension(200, 25)); + picker1.setDate(formMain.getDateProperty("mt8_startdate")); + if(!flag && !xgShu.contains("mt8_startdate")) { + picker1.setEnabled(false); + } + + qzrq2 = new JLabel(" 截至日期:"); + qzrq2.setPreferredSize(new Dimension(180, 25)); + picker2 = new JXDatePicker(); + picker2.setPreferredSize(new Dimension(200, 25)); + picker2.setDate(formMain.getDateProperty("mt8_enddate")); + if(!flag && !xgShu.contains("mt8_enddate")) { + picker2.setEnabled(false); + } + + p4.setLayout(new FlowLayout()); + p4.add(qzrq1); + p4.add(picker1); + p4.add(qzrq2); + p4.add(picker2); + + Border border = BorderFactory.createLineBorder(Color.BLACK); + oneText = new JTextArea(1, 50); + oneText.setText("一、根据的标准或者法律法规:"); + // 设置字体,MS Gothic是等宽字体,1为加粗,改为零则normal,16为字号 + oneText.setFont(new java.awt.Font(null, 1, 16)); + oneText.setEnabled(false); + oneText.setPreferredSize(new Dimension(100, 25)); + OneText.setPreferredSize(new Dimension(700, 40)); + OneText.setLineWrap(true); // 自动换行 + OneText.setText(formMain.getStringProperty("mt8_lawregulation")); + if(!flag && !xgShu.contains("mt8_lawregulation")) { + OneText.setEnabled(false); + } + OneText.setBorder(BorderFactory.createCompoundBorder(border,BorderFactory.createEmptyBorder(5, 5, 5, 5))); + p5.setLayout(new FlowLayout()); + p5.add(oneText); + p6.setLayout(new FlowLayout()); + p6.add(OneText); + + twoText = new JTextArea(1, 50); + twoText.setText("二、顾客的特殊要求:"); + twoText.setFont(new java.awt.Font(null, 1, 16)); + twoText.setEnabled(false); + twoText.setPreferredSize(new Dimension(100, 25)); + TwoText.setPreferredSize(new Dimension(700, 40)); + TwoText.setLineWrap(true); + TwoText.setText(formMain.getStringProperty("mt8_specireq")); + if(!flag && !xgShu.contains("mt8_specireq")) { + TwoText.setEnabled(false); + } + TwoText.setBorder(BorderFactory.createCompoundBorder(border,BorderFactory.createEmptyBorder(5, 5, 5, 5))); + p7.setLayout(new FlowLayout()); + p7.add(twoText); + p8.setLayout(new FlowLayout()); + p8.add(TwoText); + + threeText = new JTextArea(1, 50); + threeText.setText("三、产品交付要求:"); + threeText.setFont(new java.awt.Font(null, 1, 16)); + threeText.setEnabled(false); + threeText.setPreferredSize(new Dimension(100, 25)); + p9.setLayout(new FlowLayout()); + p9.add(threeText); + + ksyjtjsj = new JLabel("快速样件提交时间:"); + ksyjtjsj.setPreferredSize(new Dimension(180, 25)); + ksyjtjsjDate = new JXDatePicker(); + ksyjtjsjDate.setPreferredSize(new Dimension(200, 25)); + ksyjtjsjDate.setDate(formMain.getDateProperty("mt8_fsdelivertime")); + if(!flag && !xgShu.contains("mt8_fsdelivertime")) { + ksyjtjsjDate.setEnabled(false); + } + + otssj = new JLabel(" OTS时间:"); + otssj.setPreferredSize(new Dimension(180, 25)); + otssjDate = new JXDatePicker(); + otssjDate.setPreferredSize(new Dimension(200, 25)); + otssjDate.setDate(formMain.getDateProperty("mt8_otstime")); + if(!flag && !xgShu.contains("mt8_otstime")) { + otssjDate.setEnabled(false); + } + + p10.setLayout(new FlowLayout()); + p10.add(ksyjtjsj); + p10.add(ksyjtjsjDate); + p10.add(otssj); + p10.add(otssjDate); + + ppapsctjsj = new JLabel("PPAP首次提交时间:"); + ppapsctjsj.setPreferredSize(new Dimension(180, 25)); + ppapsctjsjDate = new JXDatePicker(); + ppapsctjsjDate.setPreferredSize(new Dimension(200, 25)); + ppapsctjsjDate.setDate(formMain.getDateProperty("mt8_ppapfirsttime")); + if(!flag && !xgShu.contains("mt8_ppapfirsttime")) { + ppapsctjsjDate.setEnabled(false); + } + + ppappzsj = new JLabel(" PPAP批准时间:"); + ppappzsj.setPreferredSize(new Dimension(180, 25)); + ppappzsjDate = new JXDatePicker(); + ppappzsjDate.setPreferredSize(new Dimension(200, 25)); + ppappzsjDate.setDate(formMain.getDateProperty("mt8_ppapapprovetime")); + if(!flag && !xgShu.contains("mt8_ppapapprovetime")) { + ppappzsjDate.setEnabled(false); + } + + p11.setLayout(new FlowLayout()); + p11.add(ppapsctjsj); + p11.add(ppapsctjsjDate); + p11.add(ppappzsj); + p11.add(ppappzsjDate); + + sopscsj = new JLabel("SOP首次提交时间:"); + sopscsj.setPreferredSize(new Dimension(180, 25)); + sopscsjDate = new JXDatePicker(); + sopscsjDate.setPreferredSize(new Dimension(200, 25)); + sopscsjDate.setDate(formMain.getDateProperty("mt8_soptime")); + if(!flag && !xgShu.contains("mt8_soptime")) { + sopscsjDate.setEnabled(false); + } + + p12.setLayout(new FlowLayout()); + p12.add(sopscsj); + p12.add(sopscsjDate); + + fourText = new JTextArea(1, 50); + fourText.setText("四、质量目标/产能:"); + fourText.setFont(new java.awt.Font(null, 1, 16)); + fourText.setEnabled(false); + fourText.setPreferredSize(new Dimension(100, 25)); + + p13.setLayout(new FlowLayout()); + p13.add(fourText); + + ribanText = new JTextArea(1, 10); + ribanText.setText("日/班生产量:"); + ribanText.setEnabled(false); + ribanText.setPreferredSize(new Dimension(100, 25)); + RibanText = new JTextArea(1, 50); + RibanText.setPreferredSize(new Dimension(700, 40)); + RibanText.setLineWrap(true); + RibanText.setBorder(BorderFactory.createCompoundBorder(border,BorderFactory.createEmptyBorder(5, 5, 5, 5))); + RibanText.setText(formMain.getStringProperty("mt8_dailyoutput")); + if(!flag && !xgShu.contains("mt8_dailyoutput")) { + RibanText.setEnabled(false); + } + p14.setLayout(new FlowLayout()); + p14.add(ribanText); + p14.add(RibanText); + + gskzText = new JTextArea(1, 10); + gskzText.setText("过程控制PPM要求:"); + gskzText.setEnabled(false); + gskzText.setPreferredSize(new Dimension(100, 25)); + GskzText = new JTextArea(1, 50); + GskzText.setPreferredSize(new Dimension(700, 40)); + GskzText.setLineWrap(true); + GskzText.setBorder(BorderFactory.createCompoundBorder(border,BorderFactory.createEmptyBorder(5, 5, 5, 5))); + GskzText.setText(formMain.getStringProperty("mt8_pcppm")); + if(!flag && !xgShu.contains("mt8_pcppm")) { + GskzText.setEnabled(false); + } + p15.setLayout(new FlowLayout()); + p15.add(gskzText); + p15.add(GskzText); + + chyqText = new JTextArea(1, 10); + chyqText.setText("出货PPM要求:"); + chyqText.setEnabled(false); + chyqText.setPreferredSize(new Dimension(100, 25)); + ChyqText = new JTextArea(1, 50); + ChyqText.setPreferredSize(new Dimension(700, 40)); + ChyqText.setLineWrap(true); + ChyqText.setBorder(BorderFactory.createCompoundBorder(border,BorderFactory.createEmptyBorder(5, 5, 5, 5))); + ChyqText.setText(formMain.getStringProperty("mt8_oqcppm")); + if(!flag && !xgShu.contains("mt8_oqcppm")) { + ChyqText.setEnabled(false); + } + p16.setLayout(new FlowLayout()); + p16.add(chyqText); + p16.add(ChyqText); + + gsnlText = new JTextArea(1, 10); + gsnlText.setText("过程能力分析(PPK):"); + gsnlText.setEnabled(false); + gsnlText.setPreferredSize(new Dimension(100, 25)); + GsnlText = new JTextArea(1, 50); + GsnlText.setPreferredSize(new Dimension(700, 40)); + GsnlText.setLineWrap(true); + GsnlText.setBorder(BorderFactory.createCompoundBorder(border,BorderFactory.createEmptyBorder(5, 5, 5, 5))); + GsnlText.setText(formMain.getStringProperty("mt8_cpk")); + if(!flag && !xgShu.contains("mt8_cpk")) { + GsnlText.setEnabled(false); + } + p17.setLayout(new FlowLayout()); + p17.add(gsnlText); + p17.add(GsnlText); + + fiveText = new JTextArea(1, 50); + fiveText.setText("五、服务、成本:"); + fiveText.setFont(new java.awt.Font(null, 1, 16)); + fiveText.setEnabled(false); + fiveText.setPreferredSize(new Dimension(100, 25)); + p18.setLayout(new FlowLayout()); + p18.add(fiveText); + + fwyqText = new JTextArea(1, 10); + fwyqText.setText("服务要求:"); + fwyqText.setEnabled(false); + fwyqText.setPreferredSize(new Dimension(100, 25)); + FwyqText = new JTextArea(2, 50); + FwyqText.setPreferredSize(new Dimension(700, 40)); + FwyqText.setLineWrap(true); + FwyqText.setBorder(BorderFactory.createCompoundBorder(border,BorderFactory.createEmptyBorder(5, 5, 5, 5))); + FwyqText.setText(formMain.getStringProperty("mt8_serreq")); + if(!flag && !xgShu.contains("mt8_serreq")) { + FwyqText.setEnabled(false); + } + p19.setLayout(new FlowLayout()); + p19.add(fwyqText); + p19.add(FwyqText); + + cbyqText = new JTextArea(1, 10); + cbyqText.setText("成本要求:"); + cbyqText.setEnabled(false); + cbyqText.setPreferredSize(new Dimension(100, 25)); + CbyqText = new JTextArea(2, 50); + CbyqText.setPreferredSize(new Dimension(700, 40)); + CbyqText.setLineWrap(true); + CbyqText.setBorder(BorderFactory.createCompoundBorder(border,BorderFactory.createEmptyBorder(5, 5, 5, 5))); + CbyqText.setText(formMain.getStringProperty("mt8_costreq")); + if(!flag && !xgShu.contains("mt8_costreq")) { + CbyqText.setEnabled(false); + } + p20.setLayout(new FlowLayout()); + p20.add(cbyqText); + p20.add(CbyqText); + + bzText = new JTextArea(1, 10); + bzText.setText("备注:"); + bzText.setEnabled(false); +// bzText.setPreferredSize(new Dimension(100, 25)); + BzText = new JTextArea(2, 50); + BzText.setPreferredSize(new Dimension(700, 40)); + BzText.setLineWrap(true); + BzText.setBorder(BorderFactory.createCompoundBorder(border,BorderFactory.createEmptyBorder(5, 5, 5, 5))); + BzText.setText(formMain.getStringProperty("mt8_notes")); + if(!flag && !xgShu.contains("mt8_notes")) { + BzText.setEnabled(false); + } + p21.setLayout(new FlowLayout()); + p21.add(bzText); + p21.add(BzText); + + sixText = new JTextArea(1, 50); + sixText.setFont(new java.awt.Font(null, 1, 14)); + sixText.setText("备注:本文件由项目负责人编制,提交技术部部长进行审批。"); + sixText.setEnabled(false); + sixText.setPreferredSize(new Dimension(100, 25)); + p22.setLayout(new FlowLayout()); + p22.add(sixText); + + JPanel midJPanel = new JPanel(new PropertyLayout(10,10,10,10,10,10)); + midJPanel.setSize(900,1200); + midJPanel.add( "1.1.left.top", p1); + midJPanel.add( "2.1.left.top", p2); + midJPanel.add( "3.1.left.top", p3); + midJPanel.add( "4.1.left.top", p4); + midJPanel.add( "5.1.left.top", p5); + midJPanel.add( "6.1.left.top", p6); + midJPanel.add( "7.1.left.top", p7); + midJPanel.add( "8.1.left.top", p8); + midJPanel.add( "9.1.left.top", p9); + midJPanel.add( "10.1.left.top", p10); + midJPanel.add( "11.1.left.top", p11); + midJPanel.add( "12.1.left.top", p12); + midJPanel.add( "13.1.left.top", p13); + midJPanel.add( "14.1.left.top", p14); + midJPanel.add( "15.1.left.top", p15); + midJPanel.add( "16.1.left.top", p16); + midJPanel.add( "17.1.left.top", p17); + midJPanel.add( "18.1.left.top", p18); + midJPanel.add( "19.1.left.top", p19); + midJPanel.add( "20.1.left.top", p20); + midJPanel.add( "21.1.left.top", p21); + midJPanel.add( "22.1.left.top", p22); + + scrollPane = new JScrollPane(midJPanel); + scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); + scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); + scrollPane.getVerticalScrollBar().setUnitIncrement(30); + + this.setLayout(new BorderLayout()); + this.add(scrollPane, BorderLayout.CENTER); + this.setBounds(250, 50, 1000, 1400); + this.setVisible(true); + + }catch (Exception e) { + e.printStackTrace(); + } + } + + @Override + public void loadRendering() throws TCException { + // TODO Auto-generated method stub + + } + + @Override + public void saveRendering() { + // TODO Auto-generated method stub + formSave(); + } + + public void formSave() { + try { + formMain.setStringProperty("mt8_pronum", cpbhText.getText()); + formMain.setStringProperty("mt8_cusnum", gkbhText.getText()); + formMain.setStringProperty("mt8_prodname", cpmcText.getText()); + + formMain.setDateProperty("mt8_startdate", picker1.getDate()); + formMain.setDateProperty("mt8_enddate", picker2.getDate()); + + formMain.setStringProperty("mt8_lawregulation", OneText.getText()); + formMain.setStringProperty("mt8_specireq", TwoText.getText()); + + formMain.setDateProperty("mt8_fsdelivertime", ksyjtjsjDate.getDate()); + formMain.setDateProperty("mt8_otstime", otssjDate.getDate()); + formMain.setDateProperty("mt8_ppapfirsttime", ppapsctjsjDate.getDate()); + formMain.setDateProperty("mt8_ppapapprovetime", ppappzsjDate.getDate()); + formMain.setDateProperty("mt8_soptime", sopscsjDate.getDate()); + + formMain.setStringProperty("mt8_dailyoutput", RibanText.getText()); + formMain.setStringProperty("mt8_pcppm", GskzText.getText()); + formMain.setStringProperty("mt8_oqcppm", ChyqText.getText()); + formMain.setStringProperty("mt8_cpk", GsnlText.getText()); + formMain.setStringProperty("mt8_serreq", FwyqText.getText()); + formMain.setStringProperty("mt8_costreq", CbyqText.getText()); + formMain.setStringProperty("mt8_notes", BzText.getText()); + }catch(Exception e) { + e.printStackTrace(); + } + } +} diff --git a/src/com/teamcenter/rac/stylesheet/HandoverList.java b/src/com/teamcenter/rac/stylesheet/HandoverList.java new file mode 100644 index 0000000..6aee4fa --- /dev/null +++ b/src/com/teamcenter/rac/stylesheet/HandoverList.java @@ -0,0 +1,2070 @@ +package com.teamcenter.rac.stylesheet; + +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.awt.Font; +import java.awt.Image; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.image.BufferedImage; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Locale; +import java.util.Vector; + +import javax.imageio.ImageIO; +import javax.swing.DefaultCellEditor; +import javax.swing.ImageIcon; +import javax.swing.JButton; +import javax.swing.JComboBox; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.JTextArea; +import javax.swing.JTextField; +import javax.swing.table.DefaultTableModel; + +import org.jdesktop.swingx.JXDatePicker; +import org.jdesktop.swingx.table.DatePickerCellEditor; + +import com.connnor.mdbksplm.table3.DefaultGroup; +import com.connnor.mdbksplm.table3.GroupableTableHeader; +import com.connor.mdbksplm.treamlist.CNProperty; +import com.connor.mdbksplm.treamlist.FormCheckUtil; +import com.teamcenter.rac.aif.AbstractAIFUIApplication; +import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent; +import com.teamcenter.rac.kernel.TCComponent; +import com.teamcenter.rac.kernel.TCComponentForm; +import com.teamcenter.rac.kernel.TCComponentItem; +import com.teamcenter.rac.kernel.TCComponentItemRevision; +import com.teamcenter.rac.kernel.TCException; +import com.teamcenter.rac.kernel.TCProperty; +import com.teamcenter.rac.kernel.TCSession; +import com.teamcenter.rac.kernel.TCUserService; +import com.teamcenter.rac.util.PropertyLayout; + +public class HandoverList extends AbstractRendering{ + + private HashMap allComponents = new HashMap(); + protected AbstractAIFUIApplication app; + protected InterfaceAIFComponent targetComponent; + protected TCSession session; +// protected ProgressBarThread wait; + protected TCComponentItem planItem; + protected TCComponentItemRevision itemRev; + protected TCComponentForm formMain; +// protected List list2 = new ArrayList<>(); + protected List endR = new ArrayList(); + protected String[] endStrings; + + protected TCUserService userService; + protected List releaseStatusList = new ArrayList<>(); + protected JScrollPane scrollPane; + + // 标题部分 + protected JLabel imageLabel; + protected JLabel title; + protected JPanel titlePanel = new JPanel(); + + protected JLabel xmmc; + protected JTextField xmmcText; + protected JLabel ljh; + protected JTextField ljhText; + protected JLabel khmc; + protected JTextField khmcText; + + protected JLabel lxrq; + protected JXDatePicker lxrqPicker; + protected JLabel otsrq; + protected JXDatePicker otsrqPicker; + protected JLabel ppap; + protected JXDatePicker ppapPicker; + + protected JTextArea oneText; + + // 供方 + protected JTextArea gfText; + protected JTable createTable1 = null; + protected JScrollPane xzScroll1 = null; + + // 作业文件 + protected JTextArea zywjText; + protected JTable createTable2 = null; + protected JScrollPane xzScroll2 = null; + + // 校验文件 + protected JTextArea jywjText; + protected JTable createTable3 = null; + protected JScrollPane xzScroll3 = null; + + // 人员 + protected JTextArea ryText; + protected JTable createTable4 = null; + protected JScrollPane xzScroll4 = null; + + // 设备磨具类 + protected JTextArea sbmjlText; + protected JTable createTable5 = null; + protected JScrollPane xzScroll5 = null; + + // 环境 + protected JTextArea hjText; + protected JTable createTable6 = null; + protected JScrollPane xzScroll6 = null; + + protected JTextArea twoText; // 移交问题补充说明 + + protected JTable createTable7 = null; + protected JScrollPane xzScroll7 = null; + + protected JPanel p1 = new JPanel(); + protected JPanel p2 = new JPanel(); + protected JPanel p3 = new JPanel(); + protected JPanel p4 = new JPanel(); + protected JPanel p5 = new JPanel(); + protected JPanel p6 = new JPanel(); + protected JPanel p7 = new JPanel(); + protected JPanel p8 = new JPanel(); + protected JPanel p9 = new JPanel(); + protected JPanel p10 = new JPanel(); + protected JPanel p11 = new JPanel(); + protected JPanel p12 = new JPanel(); + protected JPanel p13 = new JPanel(); + protected JPanel p14 = new JPanel(); + protected JPanel p15 = new JPanel(); + protected JPanel p16 = new JPanel(); + protected JPanel p17 = new JPanel(); + protected JPanel p18 = new JPanel(); + protected JPanel p19 = new JPanel(); + protected JPanel p20 = new JPanel(); + + + Vector btShu; + + DatePickerCellEditor datePickerCellEditor; + + Vector xgShu; + + // flag为true,对象不在流程下,为false,在流程下 + boolean flag = true; + + public HandoverList(TCComponent arg0) throws Exception { + super(arg0); + this.formMain = (TCComponentForm) arg0; + this.session = formMain.getSession(); + this.itemRev = (TCComponentItemRevision) arg0.getReferenceProperty("item_revision"); + containerLayout(); + } + + // 1创建界面 + public void containerLayout() { + System.out.println("开始渲染表单"); + // 先获得可修改属性、必填属性 +// allComponents.put(TOOL_TIP_TEXT_KEY, bgllText); + // 运行结束后,fUtil.vtModifiableAttr存储可修改属性;vtReqAttr存储必填属性 + FormCheckUtil fUtil = new FormCheckUtil(formMain, null); + xgShu = fUtil.vtModifiableAttr; + btShu = fUtil.vtReqAttr; + try { + + TCComponent[] c_process_stages = itemRev.getRelatedComponents("process_stage_list"); + if(c_process_stages != null && c_process_stages.length > 0) { + flag = false; + } + + // 第一列 p1 + BufferedImage image = ImageIO.read(TreamListDialog.class.getClassLoader().getResourceAsStream("com/teamcenter/rac/stylesheet/md.png")); + Image scaledImage = image.getScaledInstance(150, 50, Image.SCALE_SMOOTH); + imageLabel = new JLabel(); + imageLabel.setIcon(new ImageIcon(scaledImage)); + imageLabel.setPreferredSize(new Dimension(150, 50)); + title = new JLabel(" 项目移交清单"); + title.setFont(new Font("宋体", 1, 20)); + title.setPreferredSize(new Dimension(500, 50)); + p1.setLayout(new FlowLayout()); + p1.add(imageLabel); + p1.add(title); + + // 第二列 p2 + xmmc = new JLabel("项目名称:"); + xmmc.setPreferredSize(new Dimension(120, 25)); + xmmcText = new JTextField(); + xmmcText.setPreferredSize(new Dimension(120, 25)); + xmmcText.setText(formMain.getStringProperty("mt8_projname")); + if(!flag && !xgShu.contains("mt8_projname")) { + xmmcText.setEnabled(false); + } + + ljh = new JLabel("零件号:"); + ljh.setPreferredSize(new Dimension(120, 25)); + ljhText = new JTextField(); + ljhText.setPreferredSize(new Dimension(120, 25)); + ljhText.setText(formMain.getStringProperty("mt8_partnum")); + if(!flag && !xgShu.contains("mt8_partnum")) { + ljhText.setEnabled(false); + } + + khmc = new JLabel("客户名称:"); + khmc.setPreferredSize(new Dimension(120, 25)); + khmcText = new JTextField(); + khmcText.setPreferredSize(new Dimension(120, 25)); + khmcText.setText(formMain.getStringProperty("mt8_cusname")); + if(!flag && !xgShu.contains("mt8_cusname")) { + khmcText.setEnabled(false); + } + + + + p2.setLayout(new FlowLayout()); + p2.add(xmmc); + p2.add(xmmcText); + p2.add(ljh); + p2.add(ljhText); + p2.add(khmc); + p2.add(khmcText); + + // 第三列p3 + lxrq = new JLabel("立项日期:"); + lxrq.setPreferredSize(new Dimension(120, 25)); + lxrqPicker = new JXDatePicker(); + lxrqPicker.setPreferredSize(new Dimension(120, 25)); + lxrqPicker.setDate(formMain.getDateProperty("mt8_begindate")); + if(!flag && !xgShu.contains("mt8_begindate")) { + lxrqPicker.setEnabled(false); + } + + otsrq = new JLabel("OTS日期:"); + otsrq.setPreferredSize(new Dimension(120, 25)); + otsrqPicker = new JXDatePicker(); + otsrqPicker.setPreferredSize(new Dimension(120, 25)); + otsrqPicker.setDate(formMain.getDateProperty("mt8_otsdate")); + if(!flag && !xgShu.contains("mt8_otsdate")) { + otsrqPicker.setEnabled(false); + } + + ppap = new JLabel("PPAT批准日期:"); + ppap.setPreferredSize(new Dimension(120, 25)); + ppapPicker = new JXDatePicker(); + ppapPicker.setPreferredSize(new Dimension(120, 25)); + ppapPicker.setDate(formMain.getDateProperty("mt8_ppapdate")); + if(!flag && !xgShu.contains("mt8_ppapdate")) { + ppapPicker.setEnabled(false); + } + + p3.setLayout(new FlowLayout()); + p3.add(lxrq); + p3.add(lxrqPicker); + p3.add(otsrq); + p3.add(otsrqPicker); + p3.add(ppap); + p3.add(ppapPicker); + + // 第四列 + oneText = new JTextArea(1, 54); + oneText.setText("项目移交清单(由项目经理整理、汇总)"); + oneText.setEnabled(false); + oneText.setPreferredSize(new Dimension(800, 25)); + + p4.setLayout(new FlowLayout()); + p4.add(oneText); + + // 第五列 + gfText = new JTextArea(1, 64); + gfText.setText("一、项目:供方(BOM)"); + gfText.setEnabled(false); + gfText.setPreferredSize(new Dimension(500, 25)); + + JButton addButton = new JButton("添加"); + JButton delButton = new JButton("删除"); + + p5.setLayout(new FlowLayout()); + p5.add(gfText); + p5.add(addButton); + p5.add(delButton); + + // 第六列 p6 + createTable1 = createTable1(); + + JComboBox c1 = new JComboBox(); + CNProperty cn1 = new CNProperty(); + cn1.setLovName("mt8_supbom_mattype_DLOV"); + cn1.initProperty(); + for(int i=0;i= 0; i--) { + model.removeRow(selectedRows[i]); + } + } + }); + } + + private void tianjia(JButton addButton, JTable twoTable, CNProperty cn) { + addButton.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + // 添加空行 + DefaultTableModel model = (DefaultTableModel) twoTable.getModel(); + model.addRow(new Object[model.getColumnCount()]); + int rowCount = twoTable.getRowCount(); + if(cn != null) { + model.setValueAt(cn.lovValueList.get(0), rowCount-1, 0); + } + } + }); + } + + private void setShu1(JTable createTable1) { + try { + DefaultTableModel xzM = (DefaultTableModel) createTable1.getModel(); +// formMain.getTCProperties(rowTop); + TCProperty tcProperty1 = formMain.getTCProperty("mt8_supbom_mattype"); // 物料类型 + String[] mt8_supbom_mattype = tcProperty1.getStringValueArray(); + TCProperty tcProperty2 = formMain.getTCProperty("mt8_supbom_matname"); // 物料名称(自制件除外) + String[] mt8_supbom_matname = tcProperty2.getStringValueArray(); + TCProperty tcProperty3 = formMain.getTCProperty("mt8_supbom_ifquali"); // 是否合格供方 + String[] mt8_supbom_ifquali = tcProperty3.getStringValueArray(); + TCProperty tcProperty4 = formMain.getTCProperty("mt8_supbom_update"); // 更新采购物料清单 + String[] mt8_supbom_update = tcProperty4.getStringValueArray(); + TCProperty tcProperty5 = formMain.getTCProperty("mt8_supbom_ifppap"); // 是否提交PPAP + String[] mt8_supbom_ifppap = tcProperty5.getStringValueArray(); + TCProperty tcProperty6 = formMain.getTCProperty("mt8_supbom_ifapppro"); // 产品状态是否认可 + String[] mt8_supbom_ifapppro = tcProperty6.getStringValueArray(); + TCProperty tcProperty7 = formMain.getTCProperty("mt8_supbom_confirm"); // 移交确认 + String[] mt8_supbom_confirm = tcProperty7.getStringValueArray(); + + for(int i=0; i rowList = new ArrayList<>(); + rowList.add(mt8_supbom_mattype[i]); + if(mt8_supbom_matname != null && mt8_supbom_matname.length > i) { + rowList.add(mt8_supbom_matname[i]); + } else { + rowList.add(""); + } + if(mt8_supbom_ifquali != null && mt8_supbom_ifquali.length > i) { + rowList.add(mt8_supbom_ifquali[i]); + } else { + rowList.add(""); + } + if(mt8_supbom_update != null && mt8_supbom_update.length > i) { + rowList.add(mt8_supbom_update[i]); + } else { + rowList.add(""); + } + if(mt8_supbom_ifppap != null && mt8_supbom_ifppap.length > i) { + rowList.add(mt8_supbom_ifppap[i]); + } else { + rowList.add(""); + } + if(mt8_supbom_ifapppro != null && mt8_supbom_ifapppro.length > i) { + rowList.add(mt8_supbom_ifapppro[i]); + } else { + rowList.add(""); + } + if(mt8_supbom_confirm != null && mt8_supbom_confirm.length > i) { + int strStr = strStr(mt8_supbom_confirm[i], ":"); + if(strStr != -1 && strStr < mt8_supbom_confirm[i].length() - 1) { + rowList.add(mt8_supbom_confirm[i].substring(0, strStr)); + rowList.add(mt8_supbom_confirm[i].substring(strStr + 1)); + } else { + rowList.add(""); + rowList.add(""); + } + } else { + rowList.add(""); + rowList.add(""); + } + + xzM.addRow(rowList.toArray()); + } + + createTable1.updateUI(); + }catch (Exception e) { + e.printStackTrace(); + } + + } + + private void setShu2(JTable createTable2) { + try { + DefaultTableModel xzM = (DefaultTableModel) createTable2.getModel(); + TCProperty tcProperty1 = formMain.getTCProperty("mt8_jobfile_filetype"); + String[] mt8_jobfile_filetype = tcProperty1.getStringValueArray(); + TCProperty tcProperty2 = formMain.getTCProperty("mt8_jobfile_filename"); + String[] mt8_jobfile_filename = tcProperty2.getStringValueArray(); + TCProperty tcProperty3 = formMain.getTCProperty("mt8_jobfile_ifgive"); + String[] mt8_jobfile_ifgive = tcProperty3.getStringValueArray(); + TCProperty tcProperty4 = formMain.getTCProperty("mt8_jobfile_contapp"); + String[] mt8_jobfile_contapp = tcProperty4.getStringValueArray(); + TCProperty tcProperty5 = formMain.getTCProperty("mt8_jobfile_confirm"); + String[] mt8_jobfile_confirm = tcProperty5.getStringValueArray(); + + for(int i=0; i rowList = new ArrayList<>(); + rowList.add(mt8_jobfile_filetype[i]); + if(mt8_jobfile_filename != null && mt8_jobfile_filename.length > i) { + rowList.add(mt8_jobfile_filename[i]); + } else { + rowList.add(""); + } + if(mt8_jobfile_ifgive != null && mt8_jobfile_ifgive.length > i) { + rowList.add(mt8_jobfile_ifgive[i]); + } else { + rowList.add(""); + } + if(mt8_jobfile_contapp != null && mt8_jobfile_contapp.length > i) { + rowList.add(mt8_jobfile_contapp[i]); + } else { + rowList.add(""); + } + if(mt8_jobfile_confirm != null && mt8_jobfile_confirm.length > i) { + int strStr = strStr(mt8_jobfile_confirm[i], ":"); + if(strStr != -1 && strStr < mt8_jobfile_confirm[i].length() - 1) { + rowList.add(mt8_jobfile_confirm[i].substring(0, strStr)); + rowList.add(mt8_jobfile_confirm[i].substring(strStr + 1)); + } else { + rowList.add(""); + rowList.add(""); + } + } else { + rowList.add(""); + rowList.add(""); + } + + xzM.addRow(rowList.toArray()); + } + + createTable2.updateUI(); + }catch (Exception e) { + e.printStackTrace(); + } + + } + + private void setShu3(JTable createTable) { + try { + DefaultTableModel xzM = (DefaultTableModel) createTable.getModel(); + TCProperty tcProperty1 = formMain.getTCProperty("mt8_insfile_filetype"); + String[] mt8_insfile_filetype = tcProperty1.getStringValueArray(); + TCProperty tcProperty2 = formMain.getTCProperty("mt8_insfile_filename"); + String[] mt8_insfile_filename = tcProperty2.getStringValueArray(); + TCProperty tcProperty3 = formMain.getTCProperty("mt8_insfile_ifgivem"); + String[] mt8_insfile_ifgivem = tcProperty3.getStringValueArray(); + TCProperty tcProperty4 = formMain.getTCProperty("mt8_insfile_contapp"); + String[] mt8_insfile_contapp = tcProperty4.getStringValueArray(); + TCProperty tcProperty5 = formMain.getTCProperty("mt8_insfile_confirm"); + String[] mt8_insfile_confirm = tcProperty5.getStringValueArray(); + + for(int i=0; i rowList = new ArrayList<>(); + rowList.add(mt8_insfile_filetype[i]); + if(mt8_insfile_filename != null && mt8_insfile_filename.length > i) { + rowList.add(mt8_insfile_filename[i]); + } else { + rowList.add(""); + } + if(mt8_insfile_ifgivem != null && mt8_insfile_ifgivem.length > i) { + rowList.add(mt8_insfile_ifgivem[i]); + } else { + rowList.add(""); + } + if(mt8_insfile_contapp != null && mt8_insfile_contapp.length > i) { + rowList.add(mt8_insfile_contapp[i]); + } else { + rowList.add(""); + } + if(mt8_insfile_confirm != null && mt8_insfile_confirm.length > i) { + int strStr = strStr(mt8_insfile_confirm[i], ":"); + if(strStr != -1 && strStr < mt8_insfile_confirm[i].length() - 1) { + rowList.add(mt8_insfile_confirm[i].substring(0, strStr)); + rowList.add(mt8_insfile_confirm[i].substring(strStr + 1)); + } else { + rowList.add(""); + rowList.add(""); + } + } else { + rowList.add(""); + rowList.add(""); + } + + xzM.addRow(rowList.toArray()); + } + + createTable.updateUI(); + }catch (Exception e) { + e.printStackTrace(); + } + + } + + private void setShu4(JTable createTable) { + try { + DefaultTableModel xzM = (DefaultTableModel) createTable.getModel(); + TCProperty tcProperty1 = formMain.getTCProperty("mt8_person_persontype"); + String[] mt8_person_persontype = tcProperty1.getStringValueArray(); + TCProperty tcProperty2 = formMain.getTCProperty("mt8_person_opname"); + String[] mt8_person_opname = tcProperty2.getStringValueArray(); + TCProperty tcProperty3 = formMain.getTCProperty("mt8_person_ifadequate"); + String[] mt8_person_ifadequate = tcProperty3.getStringValueArray(); + TCProperty tcProperty4 = formMain.getTCProperty("mt8_person_iftraining"); + String[] mt8_person_iftraining = tcProperty4.getStringValueArray(); + TCProperty tcProperty5 = formMain.getTCProperty("mt8_person_ifeffect"); + String[] mt8_person_ifeffect = tcProperty5.getStringValueArray(); + TCProperty tcProperty6 = formMain.getTCProperty("mt8_person_ifplan"); + String[] mt8_person_ifplan = tcProperty6.getStringValueArray(); + TCProperty tcProperty7 = formMain.getTCProperty("mt8_person_confirm"); + String[] mt8_person_confirm = tcProperty7.getStringValueArray(); + + for(int i=0; i rowList = new ArrayList<>(); + rowList.add(mt8_person_persontype[i]); + if(mt8_person_opname != null && mt8_person_opname.length > i) { + rowList.add(mt8_person_opname[i]); + } else { + rowList.add(""); + } + if(mt8_person_ifadequate != null && mt8_person_ifadequate.length > i) { + rowList.add(mt8_person_ifadequate[i]); + } else { + rowList.add(""); + } + if(mt8_person_iftraining != null && mt8_person_iftraining.length > i) { + rowList.add(mt8_person_iftraining[i]); + } else { + rowList.add(""); + } + if(mt8_person_ifeffect != null && mt8_person_ifeffect.length > i) { + rowList.add(mt8_person_ifeffect[i]); + } else { + rowList.add(""); + } + if(mt8_person_ifplan != null && mt8_person_ifplan.length > i) { + rowList.add(mt8_person_ifplan[i]); + } else { + rowList.add(""); + } + if(mt8_person_confirm != null && mt8_person_confirm.length > i) { + int strStr = strStr(mt8_person_confirm[i], ":"); + if(strStr != -1 && strStr < mt8_person_confirm[i].length() - 1) { + rowList.add(mt8_person_confirm[i].substring(0, strStr)); + rowList.add(mt8_person_confirm[i].substring(strStr + 1)); + } else { + rowList.add(""); + rowList.add(""); + } + } else { + rowList.add(""); + rowList.add(""); + } + + xzM.addRow(rowList.toArray()); + } + + createTable.updateUI(); + }catch (Exception e) { + e.printStackTrace(); + } + + } + + private void setShu5(JTable createTable) { + try { + DefaultTableModel xzM = (DefaultTableModel) createTable.getModel(); + TCProperty tcProperty1 = formMain.getTCProperty("mt8_demold_type"); + String[] mt8_demold_type = tcProperty1.getStringValueArray(); + TCProperty tcProperty2 = formMain.getTCProperty("mt8_demold_devicename"); + String[] mt8_demold_devicename = tcProperty2.getStringValueArray(); + TCProperty tcProperty3 = formMain.getTCProperty("mt8_demold_quantity"); + String[] mt8_demold_quantity = tcProperty3.getStringValueArray(); + TCProperty tcProperty4 = formMain.getTCProperty("mt8_demold_ifaccept"); + String[] mt8_demold_ifaccept = tcProperty4.getStringValueArray(); + TCProperty tcProperty5 = formMain.getTCProperty("mt8_demold_ifstatus") == null ? // *要改 + tcProperty4 : formMain.getTCProperty("mt8_demold_ifstatus"); + String[] mt8_demold_ifstatus = tcProperty5.getStringValueArray(); + TCProperty tcProperty6 = formMain.getTCProperty("mt8_demold_confirm"); + String[] mt8_demold_confirm = tcProperty6.getStringValueArray(); + + for(int i=0; i rowList = new ArrayList<>(); + rowList.add(mt8_demold_type[i]); + if(mt8_demold_devicename != null && mt8_demold_devicename.length > i) { + rowList.add(mt8_demold_devicename[i]); + } else { + rowList.add(""); + } + if(mt8_demold_quantity != null && mt8_demold_quantity.length > i) { + rowList.add(mt8_demold_quantity[i]); + } else { + rowList.add(""); + } + if(mt8_demold_ifaccept != null && mt8_demold_ifaccept.length > i) { + rowList.add(mt8_demold_ifaccept[i]); + } else { + rowList.add(""); + } + if(mt8_demold_ifstatus != null && mt8_demold_ifstatus.length > i) { + rowList.add(mt8_demold_ifstatus[i]); + } else { + rowList.add(""); + } + if(mt8_demold_confirm != null && mt8_demold_confirm.length > i) { + int strStr = strStr(mt8_demold_confirm[i], ":"); + if(strStr != -1 && strStr < mt8_demold_confirm[i].length() - 1) { + rowList.add(mt8_demold_confirm[i].substring(0, strStr)); + rowList.add(mt8_demold_confirm[i].substring(strStr + 1)); + } else { + rowList.add(""); + rowList.add(""); + } + } else { + rowList.add(""); + rowList.add(""); + } + + xzM.addRow(rowList.toArray()); + } + + createTable.updateUI(); + }catch (Exception e) { + e.printStackTrace(); + } + + } + + private void setShu6(JTable createTable) { + try { + DefaultTableModel xzM = (DefaultTableModel) createTable.getModel(); + TCProperty tcProperty1 = formMain.getTCProperty("mt8_env_type"); + String[] mt8_env_type = tcProperty1.getStringValueArray(); + TCProperty tcProperty2 = formMain.getTCProperty("mt8_env_ifsufflight"); + String[] mt8_env_ifsufflight = tcProperty2.getStringValueArray(); + TCProperty tcProperty3 = formMain.getTCProperty("mt8_env_ifsecprotect"); + String[] mt8_env_ifsecprotect = tcProperty3.getStringValueArray(); + TCProperty tcProperty4 = formMain.getTCProperty("mt8_env_ifstatreason"); + String[] mt8_env_ifstatreason = tcProperty4.getStringValueArray(); + TCProperty tcProperty5 = formMain.getTCProperty("mt8_env_confirm") == null ? // *要改 + formMain.getTCProperty("mt8_insfile_confirm") : formMain.getTCProperty("mt8_env_confirm"); + String[] mt8_env_confirm = tcProperty5.getStringValueArray(); + + for(int i=0; i rowList = new ArrayList<>(); + rowList.add(mt8_env_type[i]); + if(mt8_env_ifsufflight != null && mt8_env_ifsufflight.length > i) { + rowList.add(mt8_env_ifsufflight[i]); + } else { + rowList.add(""); + } + if(mt8_env_ifsecprotect != null && mt8_env_ifsecprotect.length > i) { + rowList.add(mt8_env_ifsecprotect[i]); + } else { + rowList.add(""); + } + if(mt8_env_ifstatreason != null && mt8_env_ifstatreason.length > i) { + rowList.add(mt8_env_ifstatreason[i]); + } else { + rowList.add(""); + } + if(mt8_env_confirm != null && mt8_env_confirm.length > i) { + int strStr = strStr(mt8_env_confirm[i], ":"); + if(strStr != -1 && strStr < mt8_env_confirm[i].length() - 1) { + rowList.add(mt8_env_confirm[i].substring(0, strStr)); + rowList.add(mt8_env_confirm[i].substring(strStr + 1)); + } else { + rowList.add(""); + rowList.add(""); + } + } else { + rowList.add(""); + rowList.add(""); + } + + xzM.addRow(rowList.toArray()); + } + + createTable.updateUI(); + }catch (Exception e) { + e.printStackTrace(); + } + + } + + private void setShu7(JTable createTable) { + try { + DefaultTableModel xzM = (DefaultTableModel) createTable.getModel(); + TCProperty tcProperty1 = formMain.getTCProperty("mt8_pr_project"); + String[] mt8_pr_project = tcProperty1.getStringValueArray(); + TCProperty tcProperty2 = formMain.getTCProperty("mt8_pr_desc"); + String[] mt8_pr_desc = tcProperty2.getStringValueArray(); + TCProperty tcProperty3 = formMain.getTCProperty("mt8_pr_person"); + String[] mt8_pr_person = tcProperty3.getStringValueArray(); + TCProperty tcProperty4 = formMain.getTCProperty("mt8_pr_confirm"); + String[] mt8_pr_confirm = tcProperty4.getStringValueArray(); + + for(int i=0; i rowList = new ArrayList<>(); + rowList.add(mt8_pr_project[i]); + if(mt8_pr_desc != null && mt8_pr_desc.length > i) { + rowList.add(mt8_pr_desc[i]); + } else { + rowList.add(""); + } + if(mt8_pr_person != null && mt8_pr_person.length > i) { + rowList.add(mt8_pr_person[i]); + } else { + rowList.add(""); + } + if(mt8_pr_confirm != null && mt8_pr_confirm.length > i) { + rowList.add(mt8_pr_confirm[i]); + } else { + rowList.add(""); + } + xzM.addRow(rowList.toArray()); + } + + createTable.updateUI(); + }catch (Exception e) { + e.printStackTrace(); + } + + } + + private JTable createTable7() { + DefaultTableModel gfModel = new DefaultTableModel() { + @Override + public int getColumnCount() { + return 4; + } + }; + + JTable table = new JTable(gfModel) { + public boolean isCellEditable(int row, int column) { + if(flag) { + return true; + } + if (xgShu.size() > 0) { + if(column == 0) { + return xgShu.contains("mt8_pr_project"); + } else if(column == 1) { + return xgShu.contains("mt8_pr_desc"); + } else if(column == 2) { + return xgShu.contains("mt8_pr_person"); + } else if(column == 3) { + return xgShu.contains("mt8_pr_confirm"); + } + } + return true; + } + + }; + table.setRowHeight(40); + table.getTableHeader().setReorderingAllowed(false); // 设置不可拖拽 + table.getColumnModel().getColumn(0).setPreferredWidth(150); + table.getColumnModel().getColumn(1).setPreferredWidth(400); + table.getColumnModel().getColumn(2).setPreferredWidth(250); + table.getColumnModel().getColumn(3).setPreferredWidth(250); + table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + GroupableTableHeader tableHeader = new GroupableTableHeader(); + table.setTableHeader(tableHeader); + + DefaultGroup group = new DefaultGroup(); + group.setRow(0); + group.setRowSpan(1); + group.setColumn(0); + group.setHeaderValue("项目"); + tableHeader.addGroup(group); + + group = new DefaultGroup(); + group.setRow(0); + group.setRowSpan(1); + group.setColumn(1); + group.setHeaderValue("问题描述"); + tableHeader.addGroup(group); + + group = new DefaultGroup(); + group.setRow(0); + group.setRowSpan(1); + group.setColumn(2); + group.setHeaderValue("责任人"); + tableHeader.addGroup(group); + + group = new DefaultGroup(); + group.setRow(0); + group.setRowSpan(1); + group.setColumn(3); + group.setHeaderValue("移交确认人"); + tableHeader.addGroup(group); + + return table; + } + + // 环境 + private JTable createTable6() { + DefaultTableModel gfModel = new DefaultTableModel() { + @Override + public int getColumnCount() { + return 6; + } + }; + + JTable table = new JTable(gfModel) { + public boolean isCellEditable(int row, int column) { + if(flag) { + return true; + } + if (xgShu.size() > 0) { + if(column == 0) { + return xgShu.contains("mt8_env_type"); + } else if(column == 1) { + return xgShu.contains("mt8_env_ifsufflight"); + } else if(column == 2) { + return xgShu.contains("mt8_env_ifsecprotect"); + } else if(column == 3) { + return xgShu.contains("mt8_env_ifstatreason"); + } else if(column == 4) { + return xgShu.contains("mt8_env_confirm"); + } else if(column == 5) { + return xgShu.contains("mt8_env_confirm"); + } + } + return true; + } + + }; + table.setRowHeight(40); + table.getTableHeader().setReorderingAllowed(false); // 设置不可拖拽 + table.getColumnModel().getColumn(0).setPreferredWidth(100); + table.getColumnModel().getColumn(1).setPreferredWidth(200); + table.getColumnModel().getColumn(2).setPreferredWidth(300); + table.getColumnModel().getColumn(3).setPreferredWidth(150); + table.getColumnModel().getColumn(4).setPreferredWidth(150); + table.getColumnModel().getColumn(5).setPreferredWidth(150); + table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + GroupableTableHeader tableHeader = new GroupableTableHeader(); + table.setTableHeader(tableHeader); + + DefaultGroup group = new DefaultGroup(); + group.setRow(0); + group.setRowSpan(1); + group.setColumn(0); + group.setHeaderValue("类型"); + tableHeader.addGroup(group); + + group = new DefaultGroup(); + group.setRow(0); + group.setRowSpan(1); + group.setColumn(1); + group.setHeaderValue("光源是否充足"); + tableHeader.addGroup(group); + + group = new DefaultGroup(); + group.setRow(0); + group.setRowSpan(1); + group.setColumn(2); + group.setHeaderValue("是否有安全防护设置"); + tableHeader.addGroup(group); + + group = new DefaultGroup(); + group.setRow(0); + group.setRowSpan(1); + group.setColumn(3); + group.setHeaderValue("工位设计是否合理"); + tableHeader.addGroup(group); + + group = new DefaultGroup(); + group.setRow(0); + group.setColumn(4); + group.setColumnSpan(2); + group.setHeaderValue("移交确认"); + tableHeader.addGroup(group); + + return table; + } + + // 设备模具类 + private JTable createTable5() { + DefaultTableModel gfModel = new DefaultTableModel() { + @Override + public int getColumnCount() { + return 7; + } + }; + + JTable table = new JTable(gfModel) { + public boolean isCellEditable(int row, int column) { + if(flag) { + return true; + } + if (xgShu.size() > 0) { + if(column == 0) { + return xgShu.contains("mt8_demold_type"); + } else if(column == 1) { + return xgShu.contains("mt8_demold_devicename"); + } else if(column == 2) { + return xgShu.contains("mt8_demold_quantity"); + } else if(column == 3) { + return xgShu.contains("mt8_demold_ifaccept"); + } else if(column == 4) { + return xgShu.contains("mt8_demold_ifstatus"); + } else if(column == 5) { + return xgShu.contains("mt8_demold_confirm"); + } else if(column == 6) { + return xgShu.contains("mt8_demold_confirm"); + } + } + return true; + } + + }; + table.setRowHeight(40); + table.getTableHeader().setReorderingAllowed(false); // 设置不可拖拽 + table.getColumnModel().getColumn(0).setPreferredWidth(100); + table.getColumnModel().getColumn(1).setPreferredWidth(100); + table.getColumnModel().getColumn(2).setPreferredWidth(100); + table.getColumnModel().getColumn(3).setPreferredWidth(250); + table.getColumnModel().getColumn(4).setPreferredWidth(250); + table.getColumnModel().getColumn(5).setPreferredWidth(125); + table.getColumnModel().getColumn(6).setPreferredWidth(125); + table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + GroupableTableHeader tableHeader = new GroupableTableHeader(); + table.setTableHeader(tableHeader); + + DefaultGroup group = new DefaultGroup(); + group.setRow(0); + group.setRowSpan(1); + group.setColumn(0); + group.setHeaderValue("类型"); + tableHeader.addGroup(group); + + group = new DefaultGroup(); + group.setRow(0); + group.setRowSpan(1); + group.setColumn(1); + group.setHeaderValue("设备名称"); + tableHeader.addGroup(group); + + group = new DefaultGroup(); + group.setRow(0); + group.setRowSpan(1); + group.setColumn(2); + group.setHeaderValue("数量"); + tableHeader.addGroup(group); + + group = new DefaultGroup(); + group.setRow(0); + group.setRowSpan(1); + group.setColumn(3); + group.setHeaderValue("是否验收合格并移交"); + tableHeader.addGroup(group); + + group = new DefaultGroup(); + group.setRow(0); + group.setRowSpan(1); + group.setColumn(4); + group.setHeaderValue("状态是否符合要求"); + tableHeader.addGroup(group); + + group = new DefaultGroup(); + group.setRow(0); + group.setColumn(5); + group.setColumnSpan(2); + group.setHeaderValue("移交确认"); + tableHeader.addGroup(group); + + return table; + } + + // 人员 + private JTable createTable4() { + DefaultTableModel gfModel = new DefaultTableModel() { + @Override + public int getColumnCount() { + return 8; + } + }; + + JTable table = new JTable(gfModel) { + public boolean isCellEditable(int row, int column) { + if(flag) { + return true; + } + if (xgShu.size() > 0) { + if(column == 0) { + return xgShu.contains("mt8_person_persontype"); + } else if(column == 1) { + return xgShu.contains("mt8_person_opname"); + } else if(column == 2) { + return xgShu.contains("mt8_person_ifadequate"); + } else if(column == 3) { + return xgShu.contains("mt8_person_iftraining"); + } else if(column == 4) { + return xgShu.contains("mt8_person_ifeffect"); + } else if(column == 5) { + return xgShu.contains("mt8_person_ifplan"); + } else if(column == 6) { + return xgShu.contains("mt8_person_confirm"); + } else if(column == 7) { + return xgShu.contains("mt8_person_confirm"); + } + } + return true; + } + + }; + table.setRowHeight(40); + table.getTableHeader().setReorderingAllowed(false); // 设置不可拖拽 + table.getColumnModel().getColumn(0).setPreferredWidth(90); + table.getColumnModel().getColumn(1).setPreferredWidth(90); + table.getColumnModel().getColumn(2).setPreferredWidth(200); + table.getColumnModel().getColumn(3).setPreferredWidth(140); + table.getColumnModel().getColumn(4).setPreferredWidth(140); + table.getColumnModel().getColumn(5).setPreferredWidth(150); + table.getColumnModel().getColumn(6).setPreferredWidth(120); + table.getColumnModel().getColumn(7).setPreferredWidth(120); + table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + GroupableTableHeader tableHeader = new GroupableTableHeader(); + table.setTableHeader(tableHeader); + + DefaultGroup group = new DefaultGroup(); + group.setRow(0); + group.setRowSpan(1); + group.setColumn(0); + group.setHeaderValue("人员类型"); + tableHeader.addGroup(group); + + group = new DefaultGroup(); + group.setRow(0); + group.setRowSpan(1); + group.setColumn(1); + group.setHeaderValue("工序名称"); + tableHeader.addGroup(group); + + group = new DefaultGroup(); + group.setRow(0); + group.setRowSpan(1); + group.setColumn(2); + group.setHeaderValue("人员配备是否充分"); + tableHeader.addGroup(group); + + group = new DefaultGroup(); + group.setRow(0); + group.setRowSpan(1); + group.setColumn(3); + group.setHeaderValue("是否进行培训"); + tableHeader.addGroup(group); + + group = new DefaultGroup(); + group.setRow(0); + group.setRowSpan(1); + group.setColumn(4); + group.setHeaderValue("培训有效性评价"); + tableHeader.addGroup(group); + + group = new DefaultGroup(); + group.setRow(0); + group.setRowSpan(1); + group.setColumn(5); + group.setHeaderValue("是否有顶岗计划"); + tableHeader.addGroup(group); + + group = new DefaultGroup(); + group.setRow(0); + group.setColumn(6); + group.setColumnSpan(2); + group.setHeaderValue("移交确认"); + tableHeader.addGroup(group); + + return table; + } + + // 供方 + private JTable createTable1() { + // TODO Auto-generated method stub + DefaultTableModel gfModel = new DefaultTableModel() { + @Override + public int getColumnCount() { + return 8; + } + }; + + JTable table = new JTable(gfModel) { + public boolean isCellEditable(int row, int column) { + if(flag) { + return true; + } + if (xgShu.size() > 0) { + if(column == 0) { + return xgShu.contains("mt8_supbom_mattyp"); + } else if(column == 1) { + return xgShu.contains("mt8_supbom_matname"); + } else if(column == 2) { + return xgShu.contains("mt8_supbom_ifquali"); + } else if(column == 3) { + return xgShu.contains("mt8_supbom_update"); + } else if(column == 4) { + return xgShu.contains("mt8_supbom_ifppap"); + } else if(column == 5) { + return xgShu.contains("mt8_supbom_ifapppro"); + } else if(column == 6) { + return xgShu.contains("mt8_supbom_confirm"); + } else if(column == 7) { + return xgShu.contains("mt8_supbom_confirm"); + } + + } + return true; + } + + }; + table.setRowHeight(40); + table.getTableHeader().setReorderingAllowed(false); // 设置不可拖拽 + table.getColumnModel().getColumn(0).setPreferredWidth(90); + table.getColumnModel().getColumn(1).setPreferredWidth(190); + table.getColumnModel().getColumn(2).setPreferredWidth(90); + table.getColumnModel().getColumn(3).setPreferredWidth(140); + table.getColumnModel().getColumn(4).setPreferredWidth(140); + table.getColumnModel().getColumn(5).setPreferredWidth(150); + table.getColumnModel().getColumn(6).setPreferredWidth(100); + table.getColumnModel().getColumn(7).setPreferredWidth(150); + table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + GroupableTableHeader tableHeader = new GroupableTableHeader(); + table.setTableHeader(tableHeader); + + DefaultGroup group = new DefaultGroup(); + group.setRow(0); + group.setRowSpan(1); + group.setColumn(0); + group.setHeaderValue("物料类型"); + tableHeader.addGroup(group); + + group = new DefaultGroup(); + group.setRow(0); + group.setRowSpan(1); + group.setColumn(1); + group.setHeaderValue("物料名称(自制件除外)"); + tableHeader.addGroup(group); + + group = new DefaultGroup(); + group.setRow(0); + group.setRowSpan(1); + group.setColumn(2); + group.setHeaderValue("是否合格"); + tableHeader.addGroup(group); + + group = new DefaultGroup(); + group.setRow(0); + group.setRowSpan(1); + group.setColumn(3); + group.setHeaderValue("更新采购物料清单"); + tableHeader.addGroup(group); + + group = new DefaultGroup(); + group.setRow(0); + group.setRowSpan(1); + group.setColumn(4); + group.setHeaderValue("是否提交PPAP"); + tableHeader.addGroup(group); + + group = new DefaultGroup(); + group.setRow(0); + group.setRowSpan(1); + group.setColumn(5); + group.setHeaderValue("产品状态是否认可"); + tableHeader.addGroup(group); + + group = new DefaultGroup(); + group.setRow(0); + group.setColumn(6); + group.setColumnSpan(2); + group.setHeaderValue("移交确认"); + tableHeader.addGroup(group); + + return table; + } + + // 作业文件 + private JTable createTable2() { + // TODO Auto-generated method stub + DefaultTableModel gfModel = new DefaultTableModel() { + @Override + public int getColumnCount() { + return 6; + } + }; + + JTable table = new JTable(gfModel) { + public boolean isCellEditable(int row, int column) { + if(flag) { + return true; + } + if (xgShu.size() > 0) { + if(column == 0) { + return xgShu.contains("mt8_jobfile_filetype"); + } else if(column == 1) { + return xgShu.contains("mt8_jobfile_filename"); + } else if(column == 2) { + return xgShu.contains("mt8_jobfile_ifgive"); + } else if(column == 3) { + return xgShu.contains("mt8_jobfile_contapp"); + } else if(column == 4) { + return xgShu.contains("mt8_jobfile_confirm"); + } else if(column == 5) { + return xgShu.contains("mt8_jobfile_confirm"); + } + + } + return true; + } + + }; + table.setRowHeight(40); + table.getTableHeader().setReorderingAllowed(false); // 设置不可拖拽 + table.getColumnModel().getColumn(0).setPreferredWidth(150); + table.getColumnModel().getColumn(1).setPreferredWidth(300); + table.getColumnModel().getColumn(2).setPreferredWidth(150); + table.getColumnModel().getColumn(3).setPreferredWidth(150); + table.getColumnModel().getColumn(4).setPreferredWidth(150); + table.getColumnModel().getColumn(5).setPreferredWidth(150); + table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + GroupableTableHeader tableHeader = new GroupableTableHeader(); + table.setTableHeader(tableHeader); + + DefaultGroup group = new DefaultGroup(); + group.setRow(0); + group.setRowSpan(1); + group.setColumn(0); + group.setHeaderValue("文件类型"); + tableHeader.addGroup(group); + + group = new DefaultGroup(); + group.setRow(0); + group.setRowSpan(1); + group.setColumn(1); + group.setHeaderValue("文件名称"); + tableHeader.addGroup(group); + + group = new DefaultGroup(); + group.setRow(0); + group.setRowSpan(1); + group.setColumn(2); + group.setHeaderValue("是否发放"); + tableHeader.addGroup(group); + + group = new DefaultGroup(); + group.setRow(0); + group.setRowSpan(1); + group.setColumn(3); + group.setHeaderValue("内容适用性"); + tableHeader.addGroup(group); + + group = new DefaultGroup(); + group.setRow(0); + group.setColumn(4); + group.setColumnSpan(2); + group.setHeaderValue("移交确认"); + tableHeader.addGroup(group); + + return table; + } + + // 检验文件 + private JTable createTable3() { + // TODO Auto-generated method stub + DefaultTableModel gfModel = new DefaultTableModel() { + @Override + public int getColumnCount() { + return 6; + } + }; + + JTable table = new JTable(gfModel) { + public boolean isCellEditable(int row, int column) { + if(flag) { + return true; + } + if (xgShu.size() > 0) { + if(column == 0) { + return xgShu.contains("mt8_insfile_filetype"); + } else if(column == 1) { + return xgShu.contains("mt8_insfile_filename"); + } else if(column == 2) { + return xgShu.contains("mt8_insfile_ifgivem"); + } else if(column == 3) { + return xgShu.contains("mt8_insfile_contapp"); + } else if(column == 4) { + return xgShu.contains("mt8_insfile_confirm"); + } else if(column == 5) { + return xgShu.contains("mt8_insfile_confirm"); + } + } + return true; + } + + }; + table.setRowHeight(40); + table.getTableHeader().setReorderingAllowed(false); // 设置不可拖拽 + table.getColumnModel().getColumn(0).setPreferredWidth(150); + table.getColumnModel().getColumn(1).setPreferredWidth(300); + table.getColumnModel().getColumn(2).setPreferredWidth(150); + table.getColumnModel().getColumn(3).setPreferredWidth(150); + table.getColumnModel().getColumn(4).setPreferredWidth(150); + table.getColumnModel().getColumn(5).setPreferredWidth(150); + table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + GroupableTableHeader tableHeader = new GroupableTableHeader(); + table.setTableHeader(tableHeader); + + DefaultGroup group = new DefaultGroup(); + group.setRow(0); + group.setRowSpan(1); + group.setColumn(0); + group.setHeaderValue("文件类型"); + tableHeader.addGroup(group); + + group = new DefaultGroup(); + group.setRow(0); + group.setRowSpan(1); + group.setColumn(1); + group.setHeaderValue("文件名称"); + tableHeader.addGroup(group); + + group = new DefaultGroup(); + group.setRow(0); + group.setRowSpan(1); + group.setColumn(2); + group.setHeaderValue("是否发放"); + tableHeader.addGroup(group); + + group = new DefaultGroup(); + group.setRow(0); + group.setRowSpan(1); + group.setColumn(3); + group.setHeaderValue("内容适用性"); + tableHeader.addGroup(group); + + group = new DefaultGroup(); + group.setRow(0); + group.setColumn(4); + group.setColumnSpan(2); + group.setHeaderValue("移交确认"); + tableHeader.addGroup(group); + + return table; + } + + // 在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始) + public int strStr(String haystack, String needle) { + char[] strs1=haystack.toCharArray(); + char[] strs2=needle.toCharArray(); + for(int i=0;i btShu; + // flag为true,对象不在流程下,为false,在流程下 + boolean flag = true; + + Integer inde = 0; + + public OTSSubmit(TCComponent arg0) throws Exception { + super(arg0); + this.formMain = (TCComponentForm) arg0; + this.session = formMain.getSession(); + this.itemRev = (TCComponentItemRevision) arg0.getReferenceProperty("item_revision"); + containerLayout(); + } + + // 1创建界面 + public void containerLayout() { + System.out.println("开始渲染表单"); + // 运行结束后,fUtil.vtModifiableAttr存储可修改属性;vtReqAttr存储必填属性 + FormCheckUtil fUtil = new FormCheckUtil(formMain, null); + Vector xgShu = fUtil.vtModifiableAttr; +// xgShu.add("mt8_notes"); + btShu = fUtil.vtReqAttr; + try { + TCComponent[] c_process_stages = itemRev.getRelatedComponents("process_stage_list"); + if(c_process_stages != null && c_process_stages.length > 0) { + flag = false; + } + + BufferedImage image = ImageIO.read(TreamListDialog.class.getClassLoader().getResourceAsStream("com/teamcenter/rac/stylesheet/md.png")); + Image scaledImage = image.getScaledInstance(200, 50, Image.SCALE_SMOOTH); + imageLabel = new JLabel(); + imageLabel.setIcon(new ImageIcon(scaledImage)); + imageLabel.setPreferredSize(new Dimension(200, 50)); + title = new JLabel(" OTS文件提交清单"); + title.setFont(new Font("宋体", 1, 20)); + title.setPreferredSize(new Dimension(500, 50)); + p1.setLayout(new FlowLayout()); + p1.add(imageLabel); + p1.add(title); + + gysmc = new JLabel("供应商名称:"); + gysmc.setPreferredSize(new Dimension(180, 25)); + gysmcText = new JTextField(); + gysmcText.setPreferredSize(new Dimension(200, 25)); + gysmcText.setText(formMain.getStringProperty("mt8_suppliernaem")); + if(!flag && !xgShu.contains("mt8_suppliernaem")) { + gysmcText.setEnabled(false); + } + + cpbh = new JLabel(" 产品编号:"); + cpbh.setPreferredSize(new Dimension(180, 25)); + cpbhText = new JTextField(); + cpbhText.setPreferredSize(new Dimension(200, 25)); + cpbhText.setText(formMain.getStringProperty("mt8_pronum")); + if(!flag && !xgShu.contains("mt8_pronum")) { + cpbhText.setEnabled(false); + } + + + + p2.setLayout(new FlowLayout()); + p2.add(gysmc); + p2.add(gysmcText); + p2.add(cpbh); + p2.add(cpbhText); + + gysdm = new JLabel("供应商代码:"); + gysdm.setPreferredSize(new Dimension(180, 25)); + gysdmText = new JTextField(); + gysdmText.setPreferredSize(new Dimension(200, 25)); + gysdmText.setText(formMain.getStringProperty("mt8_supplierno")); + if(!flag && !xgShu.contains("mt8_supplierno")) { + gysdmText.setEnabled(false); + } + + cpmc = new JLabel(" 产品名称:"); + cpmc.setPreferredSize(new Dimension(180, 25)); + cpmcText = new JTextField(); + cpmcText.setPreferredSize(new Dimension(200, 25)); + cpmcText.setText(formMain.getStringProperty("mt8_prodname")); + if(!flag && !xgShu.contains("mt8_prodname")) { + cpmcText.setEnabled(false); + } + + p3.setLayout(new FlowLayout()); + p3.add(gysdm); + p3.add(gysdmText); + p3.add(cpmc); + p3.add(cpmcText); + + Object[] columns = new Object[] { "序号", "报告名称", "报告编号", "是否合格", "备注"}; + DefaultTableModel tableModel = new DefaultTableModel(null, columns); + oneTable = new JTable(tableModel) { + public boolean isCellEditable(int row, int column) { + if(flag) { + return true; + } + if (xgShu.size() > 0) { + if(column == 0) { + return xgShu.contains("mt8_no"); + } else if(column == 1) { + return xgShu.contains("mt8_delivername"); + } else if(column == 2) { + return xgShu.contains("mt8_deliverno"); + } else if(column == 3) { + return xgShu.contains("mt8_ifqualified"); + } else if(column == 4) { + return xgShu.contains("mt8_notes"); + } + } + return true; + } + }; + oneTable.setRowHeight(40); +// oneTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + oneTable.getTableHeader().setReorderingAllowed(false); // 设置不可拖拽 + oneTable.getColumnModel().getColumn(0).setPreferredWidth(180); + oneTable.getColumnModel().getColumn(1).setPreferredWidth(180); + oneTable.getColumnModel().getColumn(2).setPreferredWidth(180); + oneTable.getColumnModel().getColumn(3).setPreferredWidth(180); + oneTable.getColumnModel().getColumn(4).setPreferredWidth(180); + + JComboBox c = new JComboBox(); + CNProperty cn1 = new CNProperty(); + cn1.setLovName("MT8_ifqualified_DLOV"); + cn1.initProperty(); + for(int i=0;i rowList = new ArrayList<>(); + + if(mt8_no != null && mt8_no.length > i) { + rowList.add(mt8_no[i]); // 序号 + } else { + rowList.add(inde.toString()); // 序号 + } + + rowList.add(strs[i]); // 报告名称 + + if(mt8_deliverno != null && mt8_deliverno.length > i) { + rowList.add(mt8_deliverno[i]); // 报告编号 + } else { + rowList.add(""); // 报告编号 + } + + if(mt8_ifqualified != null && mt8_ifqualified.length > i) { + rowList.add(mt8_ifqualified[i]); // 是否合格 + } else { + rowList.add(""); // 是否合格 + } + + if(mt8_notes != null && mt8_notes.length > i) { + rowList.add(mt8_notes[i]); // 备注 + } else { + rowList.add(""); // 备注 + } + + inde++; + m.addRow(rowList.toArray()); + } + } else { + System.out.println("属性不为空,开始读取属性值"); + for (int i=0; i rowList = new ArrayList<>(); + + if(mt8_no != null && mt8_no.length > i) { + rowList.add(mt8_no[i]); // 序号 + } else { + rowList.add(inde.toString()); // 序号 + } + + rowList.add(mt8_delivername[i]); // 报告名称 + + if(mt8_deliverno != null && mt8_deliverno.length > i) { + rowList.add(mt8_deliverno[i]); // 报告编号 + } else { + rowList.add(""); // 报告编号 + } + + if(mt8_ifqualified != null && mt8_ifqualified.length > i) { + rowList.add(mt8_ifqualified[i]); // 是否合格 + } else { + rowList.add(""); // 是否合格 + } + + if(mt8_notes != null && mt8_notes.length > i) { + rowList.add(mt8_notes[i]); // 备注 + } else { + rowList.add(""); // 备注 + } + + inde++; + m.addRow(rowList.toArray()); + } + } + + oneTable.updateUI(); + xzScroll1 = new JScrollPane(oneTable) { + private static final long serialVersionUID = 1L; + + public Dimension getPreferredSize() { + return new Dimension(900, 600); + } + }; +// xzScroll1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); + xzScroll1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); //设置竖向滚动条从不可见 + p4.setLayout(new FlowLayout()); + p4.add(xzScroll1); + + JButton addButton = new JButton("添加"); + JButton delButton = new JButton("删除"); + JLabel kb = new JLabel(""); + kb.setEnabled(false); + kb.setPreferredSize(new Dimension(60, 25)); + p5.setLayout(new FlowLayout()); + p5.add(addButton); + p5.add(kb); + p5.add(delButton); + + addButton.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + // 添加空行 + DefaultTableModel model = (DefaultTableModel) oneTable.getModel(); + model.addRow(new Object[model.getColumnCount()]); + int rowCount = oneTable.getRowCount(); +// model.setValueAt(cn1.lovValueList.get(0), rowCount-1, 3); + model.setValueAt("", rowCount-1, 3); + model.setValueAt(rowCount, rowCount-1, 0); + } + }); + + delButton.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + // 删除选中行 + int[] selectedRows = oneTable.getSelectedRows(); + DefaultTableModel model = (DefaultTableModel) oneTable.getModel(); + for (int i = selectedRows.length - 1; i >= 0; i--) { + model.removeRow(selectedRows[i]); + } + int rowCount = oneTable.getRowCount(); + // 刷新每行的序号 + for(int i=0; i btShu; + // flag为true,对象不在流程下,为false,在流程下 + boolean flag = true; + + Integer inde = 0; + + public PPATSubmit(TCComponent arg0) throws Exception { + super(arg0); + this.formMain = (TCComponentForm) arg0; + this.session = formMain.getSession(); + this.itemRev = (TCComponentItemRevision) arg0.getReferenceProperty("item_revision"); + containerLayout(); + } + + // 1创建界面 + public void containerLayout() { + System.out.println("开始渲染表单"); + // 运行结束后,fUtil.vtModifiableAttr存储可修改属性;vtReqAttr存储必填属性 + FormCheckUtil fUtil = new FormCheckUtil(formMain, null); + Vector xgShu = fUtil.vtModifiableAttr; +// xgShu.add("mt8_notes"); + btShu = fUtil.vtReqAttr; + try { + TCComponent[] c_process_stages = itemRev.getRelatedComponents("process_stage_list"); + if(c_process_stages != null && c_process_stages.length > 0) { + flag = false; + } + + BufferedImage image = ImageIO.read(TreamListDialog.class.getClassLoader().getResourceAsStream("com/teamcenter/rac/stylesheet/md.png")); + Image scaledImage = image.getScaledInstance(200, 50, Image.SCALE_SMOOTH); + imageLabel = new JLabel(); + imageLabel.setIcon(new ImageIcon(scaledImage)); + imageLabel.setPreferredSize(new Dimension(200, 50)); + title = new JLabel(" PPAP 检查清单/PPAP Checklist"); + title.setFont(new Font("宋体", 1, 20)); + title.setPreferredSize(new Dimension(500, 50)); + p1.setLayout(new FlowLayout()); + p1.add(imageLabel); + p1.add(title); + + ljmc = new JLabel("零件名称:"); + ljmc.setPreferredSize(new Dimension(130, 25)); + ljmcText = new JTextField(); + ljmcText.setPreferredSize(new Dimension(200, 25)); + ljmcText.setText(formMain.getStringProperty("mt8_partname")); + if(!flag && !xgShu.contains("mt8_partname")) { + ljmcText.setEnabled(false); + } + + khljbh = new JLabel(" 客户零件编号:"); + khljbh.setPreferredSize(new Dimension(130, 25)); + khljbhText = new JTextField(); + khljbhText.setPreferredSize(new Dimension(200, 25)); + khljbhText.setText(formMain.getStringProperty("mt8_cuspartnum")); + if(!flag && !xgShu.contains("mt8_cuspartnum")) { + khljbhText.setEnabled(false); + } + + JButton addButton = new JButton("添加"); + JButton delButton = new JButton("删除"); + JLabel kb = new JLabel(""); + kb.setEnabled(false); + kb.setPreferredSize(new Dimension(60, 25)); + + p2.setLayout(new FlowLayout()); + p2.add(ljmc); + p2.add(ljmcText); + p2.add(khljbh); + p2.add(khljbhText); + p2.add(kb); + p2.add(addButton); + p2.add(delButton); + + + Object[] columns = new Object[] { "序号", "PPAP文件种类", "递交Yes", "无要求递交N/A", "备注"}; + DefaultTableModel tableModel = new DefaultTableModel(null, columns); + oneTable = new JTable(tableModel) { + public boolean isCellEditable(int row, int column) { + if(flag) { + return true; + } + if (xgShu.size() > 0) { + if(column == 0) { + return xgShu.contains("mt8_no"); + } else if(column == 1) { + return xgShu.contains("mt8_ppapfiletype"); + } else if(column == 2) { + return xgShu.contains("mt8_submit"); + } else if(column == 3) { + return xgShu.contains("mt8_unrequest"); + } else if(column == 4) { + return xgShu.contains("mt8_notes"); + } + } + return true; + } + }; + oneTable.setRowHeight(40); +// oneTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + oneTable.getTableHeader().setReorderingAllowed(false); // 设置不可拖拽 + oneTable.getColumnModel().getColumn(0).setPreferredWidth(180); + oneTable.getColumnModel().getColumn(1).setPreferredWidth(180); + oneTable.getColumnModel().getColumn(2).setPreferredWidth(180); + oneTable.getColumnModel().getColumn(3).setPreferredWidth(180); + oneTable.getColumnModel().getColumn(4).setPreferredWidth(180); + + DefaultTableModel m = (DefaultTableModel) oneTable.getModel(); + + TCProperty tcProperty1 = formMain.getTCProperty("mt8_no"); // 序号 + String[] mt8_no = tcProperty1.getStringValueArray(); + TCProperty tcProperty2 = formMain.getTCProperty("mt8_ppapfiletype"); // PPAP文件种类 + String[] mt8_ppapfiletype = tcProperty2.getStringValueArray(); + TCProperty tcProperty3 = formMain.getTCProperty("mt8_submit"); // 递交Yes + String[] mt8_submit = tcProperty3.getStringValueArray(); + TCProperty tcProperty4 = formMain.getTCProperty("mt8_unrequest"); // 无要求递交N/A + String[] mt8_unrequest = tcProperty4.getStringValueArray(); + TCProperty tcProperty5 = formMain.getTCProperty("mt8_notes"); // 备注 + String[] mt8_notes = tcProperty5.getStringValueArray(); + + inde = 1; // 序号 + // 如果部门为空,则要读取首选项中的配置 + if(mt8_ppapfiletype == null || mt8_ppapfiletype.length == 0) { + System.out.println("属性为空,开始读取首选项"); + TCPreferenceService preferenceService = session.getPreferenceService(); + String[] strs = preferenceService.getStringValues("MT_PPAPQDDoc_ppapfiletype_Config"); + if(strs == null || strs.length == 0) { + System.out.println("首选项为空"); + MessageBox.post("首选项【MT_PPAPQDDoc_ppapfiletype_Config】为空", "提示", MessageBox.WARNING); + return; + } + for (int i=0; i rowList = new ArrayList<>(); + + if(mt8_no != null && mt8_no.length > i) { + rowList.add(mt8_no[i]); // 序号 + } else { + rowList.add(inde.toString()); // 序号 + } + + rowList.add(strs[i]); // PPAP文件种类 + + if(mt8_submit != null && mt8_submit.length > i) { + rowList.add(mt8_submit[i]); // 递交Yes + } else { + rowList.add(""); // 递交Yes + } + + if(mt8_unrequest != null && mt8_unrequest.length > i) { + rowList.add(mt8_unrequest[i]); // 无要求递交N/A + } else { + rowList.add(""); // 无要求递交N/A + } + + if(mt8_notes != null && mt8_notes.length > i) { + rowList.add(mt8_notes[i]); // 备注 + } else { + rowList.add(""); // 备注 + } + + inde++; + m.addRow(rowList.toArray()); + } + } else { + System.out.println("属性不为空,开始读取属性值"); + for (int i=0; i rowList = new ArrayList<>(); + + if(mt8_no != null && mt8_no.length > i) { + rowList.add(mt8_no[i]); // 序号 + } else { + rowList.add(inde.toString()); // 序号 + } + + rowList.add(mt8_ppapfiletype[i]); // PPAP文件种类 + + if(mt8_submit != null && mt8_submit.length > i) { + rowList.add(mt8_submit[i]); // 递交Yes + } else { + rowList.add(""); // 递交Yes + } + + if(mt8_unrequest != null && mt8_unrequest.length > i) { + rowList.add(mt8_unrequest[i]); // 无要求递交N/A + } else { + rowList.add(""); // 无要求递交N/A + } + + if(mt8_notes != null && mt8_notes.length > i) { + rowList.add(mt8_notes[i]); // 备注 + } else { + rowList.add(""); // 备注 + } + + inde++; + m.addRow(rowList.toArray()); + } + } + + + + oneTable.updateUI(); + xzScroll1 = new JScrollPane(oneTable) { + private static final long serialVersionUID = 1L; + + public Dimension getPreferredSize() { + return new Dimension(900, 600); + } + }; +// xzScroll1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); + xzScroll1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); //设置竖向滚动条需要时可见 + p3.setLayout(new FlowLayout()); + p3.add(xzScroll1); + + +// gysmc = new JLabel("供应商名称:"); +// gysmc.setPreferredSize(new Dimension(180, 25)); +// gysmcText = new JTextField(); +// gysmcText.setPreferredSize(new Dimension(200, 25)); +// gysmcText.setText(formMain.getStringProperty("mt8_cuspartnum")); +// if(!flag && !xgShu.contains("mt8_cuspartnum")) { +// gysmcText.setEnabled(false); +// } + + + + addButton.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + // 添加空行 + DefaultTableModel model = (DefaultTableModel) oneTable.getModel(); + model.addRow(new Object[model.getColumnCount()]); + int rowCount = oneTable.getRowCount(); +// model.setValueAt(cn1.lovValueList.get(0), rowCount-1, 3); + model.setValueAt("", rowCount-1, 3); + model.setValueAt(rowCount, rowCount-1, 0); + } + }); + + delButton.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + // 删除选中行 + int[] selectedRows = oneTable.getSelectedRows(); + DefaultTableModel model = (DefaultTableModel) oneTable.getModel(); + for (int i = selectedRows.length - 1; i >= 0; i--) { + model.removeRow(selectedRows[i]); + } + int rowCount = oneTable.getRowCount(); + // 刷新每行的序号 + for(int i=0; i allComponents = new HashMap(); + protected AbstractAIFUIApplication app; + protected InterfaceAIFComponent targetComponent; + protected TCSession session; +// protected ProgressBarThread wait; + protected TCComponentItem planItem; + protected TCComponentItemRevision itemRev; + protected TCComponentForm formMain; +// protected List list2 = new ArrayList<>(); + protected List endR = new ArrayList(); + protected String[] endStrings; + + protected TCUserService userService; + protected List releaseStatusList = new ArrayList<>(); + protected JScrollPane scrollPane; + + // 标题部分 + protected JLabel imageLabel; + protected JLabel title; + protected JPanel titlePanel = new JPanel(); + + protected JTable oneTable = null; // 数据列表 + protected JScrollPane xzScroll1 = null; + + protected JTextArea oneText; + + protected JTable twoTable = null; // 小组数据列表 + protected JScrollPane xzScroll = null; + + protected JTextArea twoText; + + protected JTextArea threeText; + + protected JLabel fourText; + protected JTextArea bgllText = new JTextArea(3, 62); + + protected JTextArea fiveText; + + protected JTextArea sixText; + + protected JPanel p1 = new JPanel(); + protected JPanel p2 = new JPanel(); + protected JPanel p3 = new JPanel(); + protected JPanel p4 = new JPanel(); + protected JPanel p5 = new JPanel(); + protected JPanel p6 = new JPanel(); + protected JPanel p7 = new JPanel(); + protected JPanel p8 = new JPanel(); + protected JPanel p9 = new JPanel(); + + protected JPanel pp1 = new JPanel(); + protected JPanel pp2 = new JPanel(); + protected JPanel pp3 = new JPanel(); + protected JPanel pp4 = new JPanel(); + protected JPanel pp5 = new JPanel(); + protected JPanel pp6 = new JPanel(); + + Vector btShu; + + DatePickerCellEditor datePickerCellEditor; + + // flag为true,对象不在流程下,为false,在流程下 + boolean flag = true; + + public TreamListDialog(TCComponent arg0) throws Exception { + super(arg0); + this.formMain = (TCComponentForm) arg0; + this.session = formMain.getSession(); + this.itemRev = (TCComponentItemRevision) arg0.getReferenceProperty("item_revision"); + containerLayout(); + } + + // 1创建界面 + public void containerLayout() { + System.out.println("开始渲染表单"); + + + // 先获得可修改属性、必填属性 +// allComponents.put(TOOL_TIP_TEXT_KEY, bgllText); + // 运行结束后,fUtil.vtModifiableAttr存储可修改属性;vtReqAttr存储必填属性 + FormCheckUtil fUtil = new FormCheckUtil(formMain, null); + Vector xgShu = fUtil.vtModifiableAttr; + btShu = fUtil.vtReqAttr; + try { + TCComponent[] c_process_stages = itemRev.getRelatedComponents("process_stage_list"); + if(c_process_stages != null && c_process_stages.length > 0) { + flag = false; + } + + // 第一列 p1 + BufferedImage image = ImageIO.read(TreamListDialog.class.getClassLoader().getResourceAsStream("com/teamcenter/rac/stylesheet/md.png")); + Image scaledImage = image.getScaledInstance(150, 50, Image.SCALE_SMOOTH); + imageLabel = new JLabel(); + imageLabel.setIcon(new ImageIcon(scaledImage)); + imageLabel.setPreferredSize(new Dimension(150, 50)); + title = new JLabel(" 项目小组名单"); + title.setFont(new Font("宋体", 1, 20)); + title.setPreferredSize(new Dimension(500, 50)); + p1.setLayout(new FlowLayout()); + p1.add(imageLabel); + p1.add(title); + + JLabel fenge = new JLabel("________________________________________________________________________"); + fenge.setPreferredSize(new Dimension(700, 20)); +// p1.add(fenge); + +// if (oneTable.isEditing()) { +// oneTable.getCellEditor().stopCellEditing(); +// } + Object[] columns = new Object[] { "顾客零件名称", "顾客图号", "顾客编号", "项目编号", "小组成立时间" }; + DefaultTableModel tableModel = new DefaultTableModel(null, columns) { + public Class getColumnClass(int columnIndex) { + if (columnIndex == 4) { + return Date.class; + } + return super.getColumnClass(columnIndex); + } + }; + oneTable = new JTable(tableModel) { + public boolean isCellEditable(int row, int column) { + if(flag) { + return true; + } + if (xgShu.size() > 0) { + if(column == 0) { + return xgShu.contains("mt8_cuspartname"); + } else if(column == 1) { + return xgShu.contains("mt8_cusdrawnum"); + } else if(column == 2) { + return xgShu.contains("mt8_cusnum"); + } else if(column == 3) { + return xgShu.contains("mt8_projnum"); + } else if(column == 4) { + return xgShu.contains("mt8_teamesttime"); + } + } + return true; + } + + }; + oneTable.setRowHeight(40); +// oneTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + oneTable.getTableHeader().setReorderingAllowed(false); // 设置不可拖拽 + oneTable.getColumnModel().getColumn(0).setPreferredWidth(180); + oneTable.getColumnModel().getColumn(1).setPreferredWidth(180); + oneTable.getColumnModel().getColumn(2).setPreferredWidth(180); + oneTable.getColumnModel().getColumn(3).setPreferredWidth(180); + oneTable.getColumnModel().getColumn(4).setPreferredWidth(180); + + + // 创建日期选择器,并将其添加到第二列 +// TableColumn column = oneTable.getColumnModel().getColumn(4); +// column.setCellEditor(new DateCellEditor()); + + //DatePicker + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); + StringValue sv = new FormatStringValue(df); + TableCellRenderer r = new DefaultTableRenderer(sv); + datePickerCellEditor = new DatePickerCellEditor(df); + oneTable.getColumnModel().getColumn(4).setCellEditor(datePickerCellEditor); + oneTable.getColumnModel().getColumn(4).setCellRenderer(r); + + DefaultTableModel m = (DefaultTableModel) oneTable.getModel(); + String mt8_cuspartname = formMain.getStringProperty("mt8_cuspartname") == null ? + "":formMain.getStringProperty("mt8_cuspartname"); + String mt8_cusdrawnum = formMain.getStringProperty("mt8_cusdrawnum") == null ? + "":formMain.getStringProperty("mt8_cusdrawnum"); + String mt8_cusnum = formMain.getStringProperty("mt8_cusnum") == null ? + "":formMain.getStringProperty("mt8_cusnum"); + String mt8_projnum = formMain.getStringProperty("mt8_projnum") == null ? + "":formMain.getStringProperty("mt8_projnum"); + SimpleDateFormat sformat = new SimpleDateFormat("yyyy-MM-dd"); + String mt8_teamesttime = formMain.getDateProperty("mt8_teamesttime") == null ? + "2023-4-10" : sformat.format(formMain.getDateProperty("mt8_teamesttime")); + String[] rowTop = {mt8_cuspartname, mt8_cusdrawnum, mt8_cusnum, mt8_projnum, mt8_teamesttime}; + m.addRow(rowTop); + oneTable.updateUI(); + xzScroll1 = new JScrollPane(oneTable) { + public Dimension getPreferredSize() { + return new Dimension(900, 70); + } + }; + xzScroll1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); //设置水平滚动条需要时可见 + xzScroll1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER); //设置竖向滚动条需要时可见 +// xzScroll1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); +// xzScroll1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); + p2.setLayout(new FlowLayout()); + p2.add(xzScroll1); + +// oneText = new JLabel("一、小组成员及职责:"); + oneText = new JTextArea(1, 54); + oneText.setText("一、小组成员及职责:"); + oneText.setEnabled(false); + oneText.setPreferredSize(new Dimension(100, 25)); + JButton addButton = new JButton("添加"); + JButton delButton = new JButton("删除"); + p3.setLayout(new FlowLayout()); + p3.add(oneText); + p3.add(addButton); + p3.add(delButton); + + + + Object[] xzColumns = new Object[] { "部门", "担当", "指定小组成员姓名", "部门负责人签名", "联系方式", "职责", "备注"}; + DefaultTableModel xzTableModel = new DefaultTableModel(null, xzColumns); + twoTable = new JTable(xzTableModel){ + public boolean isCellEditable(int row, int column) { + if(flag) { + return true; + } + if (xgShu.size() > 0) { + if(column == 0) { + return xgShu.contains("mt8_depart"); + } else if(column == 1) { + return xgShu.contains("mt8_takeon"); + } else if(column == 2) { + return xgShu.contains("mt8_personname"); + } else if(column == 3) { + return xgShu.contains("mt8_departhead"); + } else if(column == 4) { + return xgShu.contains("mt8_contact"); + } else if(column == 5) { + return xgShu.contains("mt8_respon"); + } else if(column == 6) { + return xgShu.contains("mt8_notes"); + } + } + return true; + } + }; + twoTable.setRowHeight(40); +// twoTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + twoTable.getTableHeader().setReorderingAllowed(false); + twoTable.getColumnModel().getColumn(0).setPreferredWidth(100); + twoTable.getColumnModel().getColumn(1).setPreferredWidth(100); + twoTable.getColumnModel().getColumn(2).setPreferredWidth(100); + twoTable.getColumnModel().getColumn(3).setPreferredWidth(100); + twoTable.getColumnModel().getColumn(4).setPreferredWidth(100); + twoTable.getColumnModel().getColumn(5).setPreferredWidth(280); + twoTable.getColumnModel().getColumn(6).setPreferredWidth(100); + + JComboBox c = new JComboBox(); + CNProperty cn1 = new CNProperty(); + cn1.setLovName("MT8_depart_DLOV"); + cn1.initProperty(); + for(int i=0;i rowList = new ArrayList<>(); + // 部门 担当 指定小组成员姓名 部门负责人签名 联系方式 职责 备注 + rowList.add(split[0]); // 部门 + rowList.add(split[1]); // 担当 + if(mt8_personname != null && mt8_personname.length > i) { + rowList.add(mt8_personname[i]); // 指定小组成员姓名 + } else { + rowList.add(""); // 指定小组成员姓名 + } + if(mt8_departhead != null && mt8_departhead.length > i) { + rowList.add(mt8_departhead[i]); // 部门负责人签名 + } else { + rowList.add(""); // 部门负责人签名 + } + if(mt8_contact != null && mt8_contact.length > i) { + rowList.add(mt8_contact[i]); // 联系方式 + } else { + rowList.add(""); // 联系方式 + } + rowList.add(split[2]); // 职责 + if(mt8_notes != null && mt8_notes.length > i) { + rowList.add(mt8_notes[i]); // 备注 + } else { + rowList.add(""); // 备注 + } + + xzM.addRow(rowList.toArray()); + } + } else { + System.out.println("属性不为空,开始读取属性值"); +// ArrayList mt8_departList = new ArrayList(Arrays.asList(mt8_depart)) ; +// ArrayList mt8_takeonList = new ArrayList(Arrays.asList(mt8_takeon)) ; +// ArrayList mt8_responList = new ArrayList(Arrays.asList(mt8_respon)) ; + for(int i=0; i rowList = new ArrayList<>(); + rowList.add(mt8_depart[i]); + if(mt8_takeon != null && mt8_takeon.length > i) { + rowList.add(mt8_takeon[i]); // 担当 + } else { + rowList.add(""); // 担当 + } + if(mt8_personname != null && mt8_personname.length > i) { + rowList.add(mt8_personname[i]); // 指定小组成员姓名 + } else { + rowList.add(""); // 指定小组成员姓名 + } + if(mt8_departhead != null && mt8_departhead.length > i) { + rowList.add(mt8_departhead[i]); // 部门负责人签名 + } else { + rowList.add(""); // 部门负责人签名 + } + if(mt8_contact != null && mt8_contact.length > i) { + rowList.add(mt8_contact[i]); // 联系方式 + } else { + rowList.add(""); // 联系方式 + } + if(mt8_respon != null && mt8_respon.length > i) { + rowList.add(mt8_respon[i]); // 职责 + } else { + rowList.add(""); // 职责 + } + if(mt8_notes != null && mt8_notes.length > i) { + rowList.add(mt8_notes[i]); // 备注 + } else { + rowList.add(""); // 备注 + } + + xzM.addRow(rowList.toArray()); + } + } + + twoTable.updateUI(); + xzScroll = new JScrollPane(twoTable) { + public Dimension getPreferredSize() { + return new Dimension(900, 400); + } + }; + xzScroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); + xzScroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); + +// oneText.setPreferredSize(new Dimension(200, 25)); + p4.setLayout(new FlowLayout()); + p4.add(xzScroll); + +// twoText = new JLabel("二、保密承诺: \r\n" +// + " 小组的每位成员在开发过程中,对于客户及相关的信息(如图纸、标准、技术文件等)严格保密,不外泄与此项目无关的人员"); + twoText = new JTextArea(2, 65); + twoText.setEnabled(false); + twoText.setText("二、保密承诺: \r\n" + + " 小组的每位成员在开发过程中,对于客户及相关的信息(如图纸、标准、技术文件等)严格保密,不外泄与此项目无关的人员"); + twoText.setPreferredSize(new Dimension(500, 40)); + p5.setLayout(new FlowLayout()); + p5.add(twoText); +// p5.add(fenge); + + threeText = new JTextArea(3, 65); + threeText.setText("三、其它: \r\n" + + "1、本项目未涉及国家法律法规,顾客未指定特殊特性,故产品的特殊特性由小组成员按产品的装车、配合性能决定。\r\n" + + "2、指定成员不代表部分工作完全由该成员能独立完成,但需该成员主导跨部门协调或请示该部门领导进行协调并汇报项目组长。"); + threeText.setPreferredSize(new Dimension(500, 50)); + threeText.setEnabled(false); + p6.setLayout(new FlowLayout()); + p6.add(threeText); +// p6.add(fenge); + +// pp2.setLayout(new BorderLayout()); +// pp2.add(p4, BorderLayout.NORTH); +// pp2.add(p5, BorderLayout.CENTER); +// pp2.add(p6, BorderLayout.SOUTH); + + fourText = new JLabel("四、变更履历:"); + fourText.setPreferredSize(new Dimension(200, 25)); + fourText.setEnabled(false); + bgllText.setPreferredSize(new Dimension(700, 40)); + bgllText.setLineWrap(true); + Border border = BorderFactory.createLineBorder(Color.BLACK); + bgllText.setBorder(BorderFactory.createCompoundBorder(border,BorderFactory.createEmptyBorder(5, 5, 5, 5))); + String mt8_changerecord = formMain.getStringProperty("mt8_changerecord") == null ? // 变更履历 + "" : formMain.getStringProperty("mt8_changerecord"); + bgllText.setText(mt8_changerecord); + if(!flag && !xgShu.contains("mt8_changerecord")) { + bgllText.setEnabled(false); + } + p7.setLayout(new FlowLayout()); + p7.add(fourText); + pp1.setLayout(new FlowLayout()); + pp1.add(bgllText); +// p7.add(fenge); + + + fiveText = new JTextArea(1, 50); + fiveText.setEnabled(false); + fiveText.setText("备注:本文件由项目负责人负责编制,技术部领导进行审核,经总经理批准执行。"); + fiveText.setPreferredSize(new Dimension(500, 20)); + p8.setLayout(new FlowLayout()); + p8.add(fiveText); +// p8.add(fenge); + + sixText = new JTextArea(1, 10); + sixText.setEnabled(false); + sixText.setText("QR-IATF-JS-C03-01-A/0"); + sixText.setPreferredSize(new Dimension(200, 20)); + p9.setLayout(new FlowLayout()); + p9.add(sixText); + + + addButton.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + // 添加空行 + DefaultTableModel model = (DefaultTableModel) twoTable.getModel(); + model.addRow(new Object[model.getColumnCount()]); + int rowCount = twoTable.getRowCount(); + model.setValueAt(cn1.lovValueList.get(0), rowCount-1, 0); + model.setValueAt(cn2.lovValueList.get(0), rowCount-1, 1); + } + }); + + delButton.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + // 删除选中行 + int[] selectedRows = twoTable.getSelectedRows(); + DefaultTableModel model = (DefaultTableModel) twoTable.getModel(); + for (int i = selectedRows.length - 1; i >= 0; i--) { + model.removeRow(selectedRows[i]); + } + } + }); + + + JPanel midJPanel = new JPanel(new PropertyLayout(10,10,10,10,10,10)); + midJPanel.setSize(900,1200); + midJPanel.add( "1.1.left.top", p1); + midJPanel.add( "2.1.left.top", p2); + midJPanel.add( "3.1.left.top", p3); +// midJPanel.add( "3.2.left.top", addButton); +// midJPanel.add( "3.3.left.top", delButton); + midJPanel.add( "4.1.left.top", p4); + midJPanel.add( "5.1.left.top", p5); +// midJPanel.add( "6.1.left.top", fenge); + midJPanel.add( "6.1.left.top", p6); +// midJPanel.add( "8.1.left.top", fenge); + midJPanel.add( "7.1.left.top", p7); + midJPanel.add( "8.1.left.top", pp1); +// midJPanel.add( "10.1.left.top", fenge); + midJPanel.add( "9.1.left.top", p8); +// midJPanel.add( "12.1.left.top", fenge); + midJPanel.add( "10.1.right.top", p9); + + pp4.setLayout(new BoxLayout(midJPanel, 1)); + scrollPane = new JScrollPane(midJPanel); + scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); + scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); + scrollPane.getVerticalScrollBar().setUnitIncrement(30); + + this.setLayout(new BorderLayout()); + this.add(scrollPane, BorderLayout.CENTER); + this.setBounds(250, 50, 1000, 1400); + this.setVisible(true); + } catch (Exception e) { + System.out.println("渲染失败"); + e.printStackTrace(); + } + + + } + + // 获得lov的真实值和显示值 + public Map getLOVs(String lovName) { + Map map = new LinkedHashMap(); + map.put("", ""); + try { + TCComponentListOfValuesType lovType = (TCComponentListOfValuesType) session.getTypeComponent("ListOfValues"); + TCComponentListOfValues[] lov = lovType.find(lovName); + if (lov.length > 0) { + ListOfValuesInfo listOfValues = lov[0].getListOfValues(); + String[] realval = listOfValues.getStringListOfValues(); + for (int i = 0; i < realval.length; i++) { + String disval = listOfValues.getDisplayableValue(realval[i]); + map.put(disval, realval[i]); + } + } + } catch (TCException e) { + e.printStackTrace(); + } + return map; + } + + @Override + public void loadRendering() throws TCException { + // TODO Auto-generated method stub + + } + + @Override + public void saveRendering() { + // TODO Auto-generated method stub + DefaultTableModel model = (DefaultTableModel) oneTable.getModel(); + if(model.getValueAt(0, 0) == null || model.getValueAt(0, 0).toString().equals("")) { + if(btShu.contains("mt8_cuspartname")) { + MessageBox.post("【mt8_cuspartname】为必填", "提示", MessageBox.WARNING); + return; + } + + } + if(model.getValueAt(0, 1) == null || model.getValueAt(0, 1).toString().equals("")) { + if(btShu.contains("mt8_cusdrawnum")) { + MessageBox.post("【mt8_cusdrawnum】为必填", "提示", MessageBox.WARNING); + return; + } + + } + if(model.getValueAt(0, 2) == null || model.getValueAt(0, 2).toString().equals("")) { + if(btShu.contains("mt8_cusnum")) { + MessageBox.post("【mt8_cusnum】为必填", "提示", MessageBox.WARNING); + return; + } + + } + if(model.getValueAt(0, 3) == null || model.getValueAt(0, 3).toString().equals("")) { + if(btShu.contains("mt8_projnum")) { + MessageBox.post("【mt8_projnum】为必填", "提示", MessageBox.WARNING); + return; + } + + } + if(model.getValueAt(0, 4) == null || model.getValueAt(0, 4).toString().equals("")) { + if(btShu.contains("mt8_teamesttime")) { + MessageBox.post("【mt8_teamesttime】为必填", "提示", MessageBox.WARNING); + return; + } + + } + + DefaultTableModel model2 = (DefaultTableModel) twoTable.getModel(); + int rowCount = model2.getRowCount(); + for (int i = 0; i < rowCount; i++) { + for (int j = 0; j < twoTable.getColumnCount(); j++) { + if(model2.getValueAt(i, j) == null || model2.getValueAt(i, j).toString().equals("")) { + if(btShu.contains("mt8_depart") && j==0) { + MessageBox.post("【mt8_depart】为必填", "提示", MessageBox.WARNING); + return; + } + if(btShu.contains("mt8_takeon") && j==1) { + MessageBox.post("【mt8_takeon】为必填", "提示", MessageBox.WARNING); + return; + } + if(btShu.contains("mt8_personname") && j==2) { + MessageBox.post("【mt8_personname】为必填", "提示", MessageBox.WARNING); + return; + } + if(btShu.contains("mt8_departhead") && j==3) { + MessageBox.post("【mt8_departhead】为必填", "提示", MessageBox.WARNING); + return; + } + if(btShu.contains("mt8_contact") && j==4) { + MessageBox.post("【mt8_contact】为必填", "提示", MessageBox.WARNING); + return; + } + if(btShu.contains("mt8_respon") && j==5) { + MessageBox.post("【mt8_respon】为必填", "提示", MessageBox.WARNING); + return; + } + if(btShu.contains("mt8_notes") && j==6) { + MessageBox.post("【mt8_notes】为必填", "提示", MessageBox.WARNING); + return; + } + } + } + } + + if(btShu.contains("mt8_changerecord") && (bgllText.getText() == null || bgllText.getText().equals(""))) { + MessageBox.post("【mt8_changerecord】为必填", "提示", MessageBox.WARNING); + return; + } + + formSave(oneTable, twoTable, bgllText); + } + + // 保存数据 + public void formSave(JTable oneTable, JTable twoTable, JTextArea area) { + try { + DefaultTableModel model = (DefaultTableModel) oneTable.getModel(); + formMain.setStringProperty("mt8_cuspartname", model.getValueAt(0, 0).toString()); + formMain.setStringProperty("mt8_cusdrawnum", model.getValueAt(0, 1).toString()); + formMain.setStringProperty("mt8_cusnum", model.getValueAt(0, 2).toString()); + formMain.setStringProperty("mt8_projnum", model.getValueAt(0, 3).toString()); + DateFormat format = new SimpleDateFormat("yyyy-MM-dd");//日期格式 + Date date = null; + try { + // 创建SimpleDateFormat对象,并设置日期格式 + SimpleDateFormat formatA = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US); + System.out.println("日期:" + model.getValueAt(0, 4).toString()); + date = formatA.parse(model.getValueAt(0, 4).toString()); + String dateString = format.format(date); + date = format.parse(dateString); + formMain.setDateProperty("mt8_teamesttime", date); + } catch (Exception ee){ + System.out.println("日期格式不对,将不会赋值"); + ee.printStackTrace(); + } + + + + DefaultTableModel model2 = (DefaultTableModel) twoTable.getModel(); + int rowCount = model2.getRowCount(); + for (int i = 0; i < twoTable.getColumnCount(); i++) { + String[] rowData = new String[rowCount]; + for (int j = 0; j < rowCount; j++) { +// System.out.println("i:" + i + " j:" + j); + rowData[j] = model2.getValueAt(j, i) == null ? "" : model2.getValueAt(j, i).toString(); + } + + TCProperty tcProperty; + if(i == 0) { + tcProperty = formMain.getTCProperty("mt8_depart"); // 部门 + tcProperty.setStringValueArray(rowData); + } else if (i == 1){ + tcProperty = formMain.getTCProperty("mt8_takeon"); // 担当 + tcProperty.setStringValueArray(rowData); + } else if (i == 2){ + tcProperty = formMain.getTCProperty("mt8_personname"); // 指定小组成员姓名 + tcProperty.setStringValueArray(rowData); + } else if (i == 3){ + tcProperty = formMain.getTCProperty("mt8_departhead"); // 部门负责人签名 + tcProperty.setStringValueArray(rowData); + } else if (i == 4){ + tcProperty = formMain.getTCProperty("mt8_contact"); // 联系方式 + tcProperty.setStringValueArray(rowData); + } else if (i == 5){ + tcProperty = formMain.getTCProperty("mt8_respon"); // 职责 + tcProperty.setStringValueArray(rowData); + } else if (i == 6){ + tcProperty = formMain.getTCProperty("mt8_notes"); // 备注 + tcProperty.setStringValueArray(rowData); + } + } + + formMain.setStringProperty("mt8_changerecord", area.getText()); + } catch(Exception e) { + e.printStackTrace(); + } + + } + +} diff --git a/src/com/teamcenter/rac/stylesheet/md.png b/src/com/teamcenter/rac/stylesheet/md.png new file mode 100644 index 0000000..9015273 Binary files /dev/null and b/src/com/teamcenter/rac/stylesheet/md.png differ diff --git a/src/com/teamcenter/rac/stylesheet/stylesheet_user.properties b/src/com/teamcenter/rac/stylesheet/stylesheet_user.properties new file mode 100644 index 0000000..59dda3e --- /dev/null +++ b/src/com/teamcenter/rac/stylesheet/stylesheet_user.properties @@ -0,0 +1,8 @@ +#LB2_JSBGRevisionMaster.FORMJAVARENDERING=com.teamcenter.rac.stylesheet.TechnicalChange +#LB2_GYBGRevisionMaster.FORMJAVARENDERING=com.teamcenter.rac.stylesheet.CarftChange +#LB2_RJBGDRevisionMaster.FORMJAVARENDERING=com.teamcenter.rac.stylesheet.TecChange +MT8_XZMDDocRevisionMaster.FORMJAVARENDERING=com.teamcenter.rac.stylesheet.TreamListDialog +MT8_SJRWSDocRevisionMaster.FORMJAVARENDERING=com.teamcenter.rac.stylesheet.DesignAssignmentDialog +MT8_OTSQDDocRevisionMaster.FORMJAVARENDERING=com.teamcenter.rac.stylesheet.OTSSubmit +MT8_PPAPQDDocRevisionMaster.FORMJAVARENDERING=com.teamcenter.rac.stylesheet.PPATSubmit +MT8_YJQDDocRevisionMaster.FORMJAVARENDERING=com.teamcenter.rac.stylesheet.HandoverList \ No newline at end of file diff --git a/src/test14/Test14Dialog.java b/src/test14/Test14Dialog.java new file mode 100644 index 0000000..aec942a --- /dev/null +++ b/src/test14/Test14Dialog.java @@ -0,0 +1,118 @@ +package test14; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JTable; +import javax.swing.JTextField; + +import com.teamcenter.clientx.AppXSession; +import com.teamcenter.rac.aif.AbstractAIFUIApplication; +import com.teamcenter.rac.kernel.TCComponent; +import com.teamcenter.rac.kernel.TCComponentProject; +import com.teamcenter.rac.kernel.TCSession; +import com.teamcenter.rac.kernel.TCUserService; +import com.teamcenter.rac.util.DateButton; + +public class Test14Dialog extends JFrame{ + + private static final long serialVersionUID = 1L; + private TCSession session; + private AbstractAIFUIApplication app; + protected TCUserService userService; + + List xmxxList = new ArrayList<>(); + HashMap xmxxMap = new HashMap<>(); + + List cpxxList = new ArrayList<>(); + HashMap cpxxMap = new HashMap<>(); + + List sjxxList = new ArrayList<>(); + HashMap sjxxMap = new HashMap<>(); + + // 项目编号 :项目信息 + HashMap> projectDataMap = new HashMap>(); + + // 项目编号 :所有产品信息 + HashMap>> productDataMap = new HashMap<>(); + + // 项目编号 : 时间表信息 + HashMap> sjbDataMap = new HashMap<>(); + + // 项目编号 :项目 + HashMap projectConnect = new HashMap<>(); + + // 项目编号 :时间表 + HashMap sjbConnect = new HashMap<>(); + + List> allShu = new ArrayList<>(); + + JTable createTable; + + Integer num = 0; + + JButton searchButton = new JButton(); + JButton exportButton = new JButton("导出"); + + private JTextField xmbhField; + private JTextField cpbhField; + private JTextField cllylField; + private DateButton sgyjsjPicker; + private DateButton sgyjsjzPicker; + private JTextField nxqlField; + private JTextField nxqlzField; + private JTextField xmmcField; + private JTextField cpmcField; + private JTextField gjField; + private DateButton sopPicker; + private DateButton sopzPicker; + private JTextField smzqField; + private JTextField smzqzField; + private JTextField sycxField; + private JTextField kflxField; + private JTextField gkljbhField; + private DateButton otsPicker; + private DateButton otszPicker; + private DateButton cjrqPicker; + private DateButton cjrqzPicker; + private JTextField khbhField; + private JTextField clbzField; + private DateButton eopPicker; + private DateButton eopzPicker; + + public Test14Dialog(AbstractAIFUIApplication app) { +// super(false); + this.app = app; + this.session = (TCSession) app.getSession(); + } + + public void initUI() { + System.out.println("开始登录"); + + try { + String serverHost = "http://localhost:7001/tc"; + System.out.println("1"); + String host = System.getProperty("host"); + System.out.println("2"); + if (host != null && host.length() > 0) + { + System.out.println("3"); + serverHost = host; + } + + System.out.println("4"); + AppXSession session2 = null; + System.out.println("5"); + session2 = new AppXSession(serverHost); + System.out.println("6"); + }catch(Exception e) { + e.printStackTrace(); + } + + System.out.println("登录完成"); + + } +} diff --git a/src/test14/test14Handler.java b/src/test14/test14Handler.java new file mode 100644 index 0000000..fa8acdb --- /dev/null +++ b/src/test14/test14Handler.java @@ -0,0 +1,21 @@ +package test14; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; + +import com.connor.mdbksplm.projecttaskban.ProjectTaskDialog; +import com.teamcenter.rac.aif.AbstractAIFUIApplication; +import com.teamcenter.rac.aifrcp.AIFUtility; + +public class test14Handler extends AbstractHandler{ + @Override + public Object execute(ExecutionEvent arg0) throws ExecutionException { + System.out.println("开始创建界面"); + AbstractAIFUIApplication app = AIFUtility.getCurrentApplication(); + Test14Dialog dialog = new Test14Dialog(app); + dialog.initUI(); +// new Thread(dialog).start(); + return null; + } +}